OSDN Git Service

[media] drx-j: replace the ugly CHK_ERROR() macro
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 16 Jan 2014 22:41:13 +0000 (19:41 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 4 Mar 2014 17:26:46 +0000 (14:26 -0300)
Using return and goto inside macros is ugly and makes harder to
understand the code and the labels. Remove those macros, and add
a proper error debug message, when something bad happens.

This was generated using the following coccinelle script:

@@
@@
-DUMMY_READ();
+do {
+ u16 dummy;
+ RR16(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy);
+} while (0);

@@
expression dev, addr, val;
@@
-WR16(dev, addr, val)
+CHK_ERROR(DRXJ_DAP.write_reg16func(dev, addr, val, 0))

@@
expression dev, addr, val;
@@
-RR16(dev, addr, val)
+CHK_ERROR(DRXJ_DAP.read_reg16func(dev, addr, val, 0))

@@
expression dev, addr, val;
@@
-WR32(dev, addr, val)
+CHK_ERROR(DRXJ_DAP.write_reg32func(dev, addr, val, 0))

@@
expression dev, addr, val;
@@
-RR32(dev, addr, val)
+CHK_ERROR(DRXJ_DAP.read_reg32func(dev, addr, val, 0))

@@
expression dev, addr, val, block;
@@
-WRB(dev, addr, val, block)
+CHK_ERROR(DRXJ_DAP.write_block_func(dev, addr, val, block, 0))

@@
expression dev, addr, val, block;
@@
-RRB(dev, addr, val, block)
+CHK_ERROR(DRXJ_DAP.read_block_func(dev, addr, val, block, 0))

@@
expression dev, addr, val;
@@
-BCWR16(dev, addr, val)
+CHK_ERROR(DRXJ_DAP.write_reg16func(dev, addr, val, DRXDAP_FASI_BROADCAST))

@@
expression dev, addr, val;
@@
-ARR32(dev, addr, val)
+CHK_ERROR(drxj_dap_atomic_read_reg32(dev, addr, val, 0))

@@
expression dev, addr, val;
@@
-SARR16(dev, addr, val)
+CHK_ERROR(drxj_dap_scu_atomic_read_reg16(dev, addr, val, 0))

@@
expression x;
@@
-CHK_ERROR(x);
+rc = x;
+if (rc != DRX_STS_OK) {
+ pr_err("error %d\n", rc);
+ goto rw_error;
+}

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 d51cea9..13bb381 100644 (file)
@@ -40,6 +40,8 @@
 INCLUDE FILES
 ----------------------------------------------------------------------------*/
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include "drxj.h"
 #include "drxj_map.h"
 
@@ -478,66 +480,6 @@ DEFINES
 /*=== REGISTER ACCESS MACROS =================================================*/
 /*============================================================================*/
 
-#ifdef DRXJDRIVER_DEBUG
-#include <stdio.h>
-#define CHK_ERROR(s) \
-       do { \
-           if ((s) != DRX_STS_OK) \
-           { \
-              fprintf(stderr, \
-                      "ERROR[\n file    : %s\n line    : %d\n]\n", \
-                      __FILE__, __LINE__); \
-              goto rw_error; }; \
-           } \
-       while (0 != 0)
-#else
-#define CHK_ERROR(s) \
-   do { \
-      if ((s) != DRX_STS_OK) { goto rw_error; } \
-   } while (0 != 0)
-#endif
-
-#define CHK_ZERO(s) \
-   do { \
-      if ((s) == 0) return DRX_STS_ERROR; \
-   } while (0)
-
-#define DUMMY_READ() \
-   do { \
-      u16 dummy; \
-      RR16(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy); \
-   } while (0)
-
-#define WR16(dev, addr, val) \
-   CHK_ERROR(DRXJ_DAP.write_reg16func((dev), (addr), (val), 0))
-
-#define RR16(dev, addr, val) \
-   CHK_ERROR(DRXJ_DAP.read_reg16func((dev), (addr), (val), 0))
-
-#define WR32(dev, addr, val) \
-   CHK_ERROR(DRXJ_DAP.write_reg32func((dev), (addr), (val), 0))
-
-#define RR32(dev, addr, val) \
-   CHK_ERROR(DRXJ_DAP.read_reg32func((dev), (addr), (val), 0))
-
-#define WRB(dev, addr, len, block) \
-   CHK_ERROR(DRXJ_DAP.write_block_func((dev), (addr), (len), (block), 0))
-
-#define RRB(dev, addr, len, block) \
-   CHK_ERROR(DRXJ_DAP.read_block_func((dev), (addr), (len), (block), 0))
-
-#define BCWR16(dev, addr, val) \
-   CHK_ERROR(DRXJ_DAP.write_reg16func((dev), (addr), (val), DRXDAP_FASI_BROADCAST))
-
-#define ARR32(dev, addr, val) \
-   CHK_ERROR(drxj_dap_atomic_read_reg32((dev), (addr), (val), 0))
-
-#define SARR16(dev, addr, val) \
-   CHK_ERROR(drxj_dap_scu_atomic_read_reg16((dev), (addr), (val), 0))
-
-#define SAWR16(dev, addr, val) \
-   CHK_ERROR(drxj_dap_scu_atomic_write_reg16((dev), (addr), (val), 0))
-
 /**
 * This macro is used to create byte arrays for block writes.
 * Block writes speed up I2C traffic between host and demod.
@@ -2100,7 +2042,7 @@ int drxj_dap_atomic_read_write_block(struct i2c_device_addr *dev_addr,
                                          u8 *data, bool read_flag)
 {
        drxj_hi_cmd_t hi_cmd;
-
+       int rc;
        u16 word;
        u16 dummy = 0;
        u16 i = 0;
@@ -2141,7 +2083,11 @@ int drxj_dap_atomic_read_write_block(struct i2c_device_addr *dev_addr,
                }
        }
 
-       CHK_ERROR(hi_command(dev_addr, &hi_cmd, &dummy));
+       rc = hi_command(dev_addr, &hi_cmd, &dummy);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (read_flag == true) {
                /* read data from buffer */
@@ -2227,6 +2173,7 @@ static int hi_cfg_command(const struct drx_demod_instance *demod)
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        drxj_hi_cmd_t hi_cmd;
        u16 result = 0;
+       int rc;
 
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
@@ -2238,7 +2185,11 @@ static int hi_cfg_command(const struct drx_demod_instance *demod)
        hi_cmd.param5 = ext_attr->hi_cfg_ctrl;
        hi_cmd.param6 = ext_attr->hi_cfg_transmit;
 
-       CHK_ERROR(hi_command(demod->my_i2c_dev_addr, &hi_cmd, &result));
+       rc = hi_command(demod->my_i2c_dev_addr, &hi_cmd, &result);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Reset power down flag (set one call only) */
        ext_attr->hi_cfg_ctrl &= (~(SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ));
@@ -2266,20 +2217,45 @@ hi_command(struct i2c_device_addr *dev_addr, const pdrxj_hi_cmd_t cmd, u16 *resu
        u16 wait_cmd = 0;
        u16 nr_retries = 0;
        bool powerdown_cmd = false;
+       int rc;
 
        /* Write parameters */
        switch (cmd->cmd) {
 
        case SIO_HI_RA_RAM_CMD_CONFIG:
        case SIO_HI_RA_RAM_CMD_ATOMIC_COPY:
-               WR16(dev_addr, SIO_HI_RA_RAM_PAR_6__A, cmd->param6);
-               WR16(dev_addr, SIO_HI_RA_RAM_PAR_5__A, cmd->param5);
-               WR16(dev_addr, SIO_HI_RA_RAM_PAR_4__A, cmd->param4);
-               WR16(dev_addr, SIO_HI_RA_RAM_PAR_3__A, cmd->param3);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_HI_RA_RAM_PAR_6__A, cmd->param6, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_HI_RA_RAM_PAR_5__A, cmd->param5, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_HI_RA_RAM_PAR_4__A, cmd->param4, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_HI_RA_RAM_PAR_3__A, cmd->param3, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /* fallthrough */
        case SIO_HI_RA_RAM_CMD_BRDCTRL:
-               WR16(dev_addr, SIO_HI_RA_RAM_PAR_2__A, cmd->param2);
-               WR16(dev_addr, SIO_HI_RA_RAM_PAR_1__A, cmd->param1);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_HI_RA_RAM_PAR_2__A, cmd->param2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_HI_RA_RAM_PAR_1__A, cmd->param1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /* fallthrough */
        case SIO_HI_RA_RAM_CMD_NULL:
                /* No parameters */
@@ -2291,7 +2267,11 @@ hi_command(struct i2c_device_addr *dev_addr, const pdrxj_hi_cmd_t cmd, u16 *resu
        }
 
        /* Write command */
-       WR16(dev_addr, SIO_HI_RA_RAM_CMD__A, cmd->cmd);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_HI_RA_RAM_CMD__A, cmd->cmd, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if ((cmd->cmd) == SIO_HI_RA_RAM_CMD_RESET) {
                /* Allow for HI to reset */
@@ -2311,11 +2291,19 @@ hi_command(struct i2c_device_addr *dev_addr, const pdrxj_hi_cmd_t cmd, u16 *resu
                                goto rw_error;
                        };
 
-                       RR16(dev_addr, SIO_HI_RA_RAM_CMD__A, &wait_cmd);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_HI_RA_RAM_CMD__A, &wait_cmd, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                } while (wait_cmd != 0);
 
                /* Read result */
-               RR16(dev_addr, SIO_HI_RA_RAM_RES__A, result);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_HI_RA_RAM_RES__A, result, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
        }
        /* if ( powerdown_cmd == true ) */
@@ -2342,13 +2330,18 @@ static int init_hi(const struct drx_demod_instance *demod)
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        struct drx_common_attr *common_attr = (struct drx_common_attr *) (NULL);
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
+       int rc;
 
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
        common_attr = (struct drx_common_attr *) demod->my_common_attr;
        dev_addr = demod->my_i2c_dev_addr;
 
        /* PATCH for bug 5003, HI ucode v3.1.0 */
-       WR16(dev_addr, 0x4301D7, 0x801);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, 0x4301D7, 0x801, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Timing div, 250ns/Psys */
        /* Timing div, = ( delay (nano seconds) * sysclk (kHz) )/ 1000 */
@@ -2380,7 +2373,11 @@ static int init_hi(const struct drx_demod_instance *demod)
        /* transit mode time out delay and watch dog divider */
        ext_attr->hi_cfg_transmit = SIO_HI_RA_RAM_PAR_6__PRE;
 
-       CHK_ERROR(hi_cfg_command(demod));
+       rc = hi_cfg_command(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 
@@ -2422,14 +2419,27 @@ static int get_device_capabilities(struct drx_demod_instance *demod)
        u16 sio_pdr_ohw_cfg = 0;
        u32 sio_top_jtagid_lo = 0;
        u16 bid = 0;
+       int rc;
 
        common_attr = (struct drx_common_attr *) demod->my_common_attr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
        dev_addr = demod->my_i2c_dev_addr;
 
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
-       RR16(dev_addr, SIO_PDR_OHW_CFG__A, &sio_pdr_ohw_cfg);
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_PDR_OHW_CFG__A, &sio_pdr_ohw_cfg, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        switch ((sio_pdr_ohw_cfg & SIO_PDR_OHW_CFG_FREF_SEL__M)) {
        case 0:
@@ -2455,15 +2465,31 @@ static int get_device_capabilities(struct drx_demod_instance *demod)
           Determine device capabilities
           Based on pinning v47
         */
-       RR32(dev_addr, SIO_TOP_JTAGID_LO__A, &sio_top_jtagid_lo);
+       rc = DRXJ_DAP.read_reg32func(dev_addr, SIO_TOP_JTAGID_LO__A, &sio_top_jtagid_lo, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->mfx = (u8) ((sio_top_jtagid_lo >> 29) & 0xF);
 
        switch ((sio_top_jtagid_lo >> 12) & 0xFF) {
        case 0x31:
-               WR16(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
-               RR16(dev_addr, SIO_PDR_UIO_IN_HI__A, &bid);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_PDR_UIO_IN_HI__A, &bid, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                bid = (bid >> 10) & 0xf;
-               WR16(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                ext_attr->has_lna = true;
                ext_attr->has_ntsc = false;
@@ -2600,9 +2626,11 @@ static int power_up_device(struct drx_demod_instance *demod)
        wake_up_addr.i2c_addr = DRXJ_WAKE_UP_KEY;
        wake_up_addr.i2c_dev_id = dev_addr->i2c_dev_id;
        wake_up_addr.user_data = dev_addr->user_data;
-       /* CHK_ERROR macro not used, I2C access may fail in this case: no ack
-          dummy write must be used to wake uop device, dummy read must be used to
-          reset HI state machine (avoiding actual writes) */
+       /*
+        * I2C access may fail in this case: no ack
+        * dummy write must be used to wake uop device, dummy read must be used to
+        * reset HI state machine (avoiding actual writes)
+        */
        do {
                data = 0;
                drxbsp_i2c_write_read(&wake_up_addr, 1, &data,
@@ -2644,6 +2672,7 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        struct drx_common_attr *common_attr = (struct drx_common_attr *) (NULL);
+       int rc;
        u16 fec_oc_reg_mode = 0;
        u16 fec_oc_reg_ipr_mode = 0;
        u16 fec_oc_reg_ipr_invert = 0;
@@ -2657,6 +2686,7 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
            FEC_OC_IPR_INVERT_MD5__M | FEC_OC_IPR_INVERT_MD4__M |
            FEC_OC_IPR_INVERT_MD3__M | FEC_OC_IPR_INVERT_MD2__M |
            FEC_OC_IPR_INVERT_MD1__M | FEC_OC_IPR_INVERT_MD0__M;
+
        /* check arguments */
        if ((demod == NULL) || (cfg_data == NULL)) {
                return (DRX_STS_INVALID_ARG);
@@ -2693,19 +2723,55 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
                        return (DRX_STS_OK);
                }
 
-               WR16(dev_addr, FEC_OC_OCR_INVERT__A, 0);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_OCR_INVERT__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                switch (ext_attr->standard) {
                case DRX_STANDARD_8VSB:
-                       WR16(dev_addr, FEC_OC_FCT_USAGE__A, 7); /* 2048 bytes fifo ram */
-                       WR16(dev_addr, FEC_OC_TMD_CTL_UPD_RATE__A, 10);
-                       WR16(dev_addr, FEC_OC_TMD_INT_UPD_RATE__A, 10);
-                       WR16(dev_addr, FEC_OC_AVR_PARM_A__A, 5);
-                       WR16(dev_addr, FEC_OC_AVR_PARM_B__A, 7);
-                       WR16(dev_addr, FEC_OC_RCN_GAIN__A, 10);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_FCT_USAGE__A, 7, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /* 2048 bytes fifo ram */
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_TMD_CTL_UPD_RATE__A, 10, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_TMD_INT_UPD_RATE__A, 10, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_AVR_PARM_A__A, 5, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_AVR_PARM_B__A, 7, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_RCN_GAIN__A, 10, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        /* Low Water Mark for synchronization  */
-                       WR16(dev_addr, FEC_OC_SNC_LWM__A, 3);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_SNC_LWM__A, 3, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        /* High Water Mark for synchronization */
-                       WR16(dev_addr, FEC_OC_SNC_HWM__A, 5);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_SNC_HWM__A, 5, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_STANDARD_ITU_A:
                case DRX_STANDARD_ITU_C:
@@ -2734,31 +2800,70 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
                            (ext_attr->curr_symbol_rate / 8) * nr_bits * 188;
                        /* pass through b/c Annex A/c need following settings */
                case DRX_STANDARD_ITU_B:
-                       WR16(dev_addr, FEC_OC_FCT_USAGE__A,
-                            FEC_OC_FCT_USAGE__PRE);
-                       WR16(dev_addr, FEC_OC_TMD_CTL_UPD_RATE__A,
-                            FEC_OC_TMD_CTL_UPD_RATE__PRE);
-                       WR16(dev_addr, FEC_OC_TMD_INT_UPD_RATE__A, 5);
-                       WR16(dev_addr, FEC_OC_AVR_PARM_A__A,
-                            FEC_OC_AVR_PARM_A__PRE);
-                       WR16(dev_addr, FEC_OC_AVR_PARM_B__A,
-                            FEC_OC_AVR_PARM_B__PRE);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_FCT_USAGE__A, FEC_OC_FCT_USAGE__PRE, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_TMD_CTL_UPD_RATE__A, FEC_OC_TMD_CTL_UPD_RATE__PRE, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_TMD_INT_UPD_RATE__A, 5, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_AVR_PARM_A__A, FEC_OC_AVR_PARM_A__PRE, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_AVR_PARM_B__A, FEC_OC_AVR_PARM_B__PRE, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        if (cfg_data->static_clk == true) {
-                               WR16(dev_addr, FEC_OC_RCN_GAIN__A, 0xD);
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_RCN_GAIN__A, 0xD, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                        } else {
-                               WR16(dev_addr, FEC_OC_RCN_GAIN__A,
-                                    FEC_OC_RCN_GAIN__PRE);
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_RCN_GAIN__A, FEC_OC_RCN_GAIN__PRE, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_SNC_LWM__A, 2, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_SNC_HWM__A, 12, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
                        }
-                       WR16(dev_addr, FEC_OC_SNC_LWM__A, 2);
-                       WR16(dev_addr, FEC_OC_SNC_HWM__A, 12);
                        break;
                default:
                        break;
                }               /* swtich (standard) */
 
                /* Check insertion of the Reed-Solomon parity bytes */
-               RR16(dev_addr, FEC_OC_MODE__A, &fec_oc_reg_mode);
-               RR16(dev_addr, FEC_OC_IPR_MODE__A, &fec_oc_reg_ipr_mode);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_MODE__A, &fec_oc_reg_mode, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_IPR_MODE__A, &fec_oc_reg_ipr_mode, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (cfg_data->insert_rs_byte == true) {
                        /* enable parity symbol forward */
                        fec_oc_reg_mode |= FEC_OC_MODE_PARITY__M;
@@ -2918,97 +3023,287 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
                        dto_rate =
                            frac28(bit_rate, common_attr->sys_clock_freq * 1000);
                        dto_rate >>= 3;
-                       WR16(dev_addr, FEC_OC_DTO_RATE_HI__A,
-                            (u16) ((dto_rate >> 16) & FEC_OC_DTO_RATE_HI__M));
-                       WR16(dev_addr, FEC_OC_DTO_RATE_LO__A,
-                            (u16) (dto_rate & FEC_OC_DTO_RATE_LO_RATE_LO__M));
-                       WR16(dev_addr, FEC_OC_DTO_MODE__A,
-                            FEC_OC_DTO_MODE_DYNAMIC__M |
-                            FEC_OC_DTO_MODE_OFFSET_ENABLE__M);
-                       WR16(dev_addr, FEC_OC_FCT_MODE__A,
-                            FEC_OC_FCT_MODE_RAT_ENA__M |
-                            FEC_OC_FCT_MODE_VIRT_ENA__M);
-                       WR16(dev_addr, FEC_OC_DTO_BURST_LEN__A,
-                            fec_oc_dto_burst_len);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DTO_RATE_HI__A, (u16)((dto_rate >> 16) & FEC_OC_DTO_RATE_HI__M), 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DTO_RATE_LO__A, (u16)(dto_rate & FEC_OC_DTO_RATE_LO_RATE_LO__M), 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DTO_MODE__A, FEC_OC_DTO_MODE_DYNAMIC__M | FEC_OC_DTO_MODE_OFFSET_ENABLE__M, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_FCT_MODE__A, FEC_OC_FCT_MODE_RAT_ENA__M | FEC_OC_FCT_MODE_VIRT_ENA__M, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DTO_BURST_LEN__A, fec_oc_dto_burst_len, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        if (ext_attr->mpeg_output_clock_rate !=
                            DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO)
                                fec_oc_dto_period =
                                    ext_attr->mpeg_output_clock_rate - 1;
-                       WR16(dev_addr, FEC_OC_DTO_PERIOD__A, fec_oc_dto_period);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DTO_PERIOD__A, fec_oc_dto_period, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                } else {        /* Dynamic mode */
 
-                       WR16(dev_addr, FEC_OC_DTO_MODE__A,
-                            FEC_OC_DTO_MODE_DYNAMIC__M);
-                       WR16(dev_addr, FEC_OC_FCT_MODE__A, 0);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DTO_MODE__A, FEC_OC_DTO_MODE_DYNAMIC__M, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_FCT_MODE__A, 0, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
 
-               WR32(dev_addr, FEC_OC_RCN_CTL_RATE_LO__A, rcn_rate);
+               rc = DRXJ_DAP.write_reg32func(dev_addr, FEC_OC_RCN_CTL_RATE_LO__A, rcn_rate, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* Write appropriate registers with requested configuration */
-               WR16(dev_addr, FEC_OC_MODE__A, fec_oc_reg_mode);
-               WR16(dev_addr, FEC_OC_IPR_MODE__A, fec_oc_reg_ipr_mode);
-               WR16(dev_addr, FEC_OC_IPR_INVERT__A, fec_oc_reg_ipr_invert);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_MODE__A, fec_oc_reg_mode, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_IPR_MODE__A, fec_oc_reg_ipr_mode, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_IPR_INVERT__A, fec_oc_reg_ipr_invert, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* enabling for both parallel and serial now */
                /*  Write magic word to enable pdr reg write */
-               WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /*  Set MPEG TS pads to outputmode */
-               WR16(dev_addr, SIO_PDR_MSTRT_CFG__A, 0x0013);
-               WR16(dev_addr, SIO_PDR_MERR_CFG__A, 0x0013);
-               WR16(dev_addr, SIO_PDR_MCLK_CFG__A,
-                    MPEG_OUTPUT_CLK_DRIVE_STRENGTH << SIO_PDR_MCLK_CFG_DRIVE__B
-                    | 0x03 << SIO_PDR_MCLK_CFG_MODE__B);
-               WR16(dev_addr, SIO_PDR_MVAL_CFG__A, 0x0013);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MSTRT_CFG__A, 0x0013, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MERR_CFG__A, 0x0013, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MCLK_CFG__A, MPEG_OUTPUT_CLK_DRIVE_STRENGTH << SIO_PDR_MCLK_CFG_DRIVE__B | 0x03 << SIO_PDR_MCLK_CFG_MODE__B, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MVAL_CFG__A, 0x0013, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                sio_pdr_md_cfg =
                    MPEG_SERIAL_OUTPUT_PIN_DRIVE_STRENGTH <<
                    SIO_PDR_MD0_CFG_DRIVE__B | 0x03 << SIO_PDR_MD0_CFG_MODE__B;
-               WR16(dev_addr, SIO_PDR_MD0_CFG__A, sio_pdr_md_cfg);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD0_CFG__A, sio_pdr_md_cfg, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (cfg_data->enable_parallel == true) {        /* MPEG data output is paralel -> set MD1 to MD7 to output mode */
                        sio_pdr_md_cfg =
                            MPEG_PARALLEL_OUTPUT_PIN_DRIVE_STRENGTH <<
                            SIO_PDR_MD0_CFG_DRIVE__B | 0x03 <<
                            SIO_PDR_MD0_CFG_MODE__B;
-                       WR16(dev_addr, SIO_PDR_MD0_CFG__A, sio_pdr_md_cfg);
-                       WR16(dev_addr, SIO_PDR_MD1_CFG__A, sio_pdr_md_cfg);
-                       WR16(dev_addr, SIO_PDR_MD2_CFG__A, sio_pdr_md_cfg);
-                       WR16(dev_addr, SIO_PDR_MD3_CFG__A, sio_pdr_md_cfg);
-                       WR16(dev_addr, SIO_PDR_MD4_CFG__A, sio_pdr_md_cfg);
-                       WR16(dev_addr, SIO_PDR_MD5_CFG__A, sio_pdr_md_cfg);
-                       WR16(dev_addr, SIO_PDR_MD6_CFG__A, sio_pdr_md_cfg);
-                       WR16(dev_addr, SIO_PDR_MD7_CFG__A, sio_pdr_md_cfg);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD0_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD1_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD2_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD3_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD4_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD5_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD6_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD7_CFG__A, sio_pdr_md_cfg, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                } else {        /* MPEG data output is serial -> set MD1 to MD7 to tri-state */
-                       WR16(dev_addr, SIO_PDR_MD1_CFG__A, 0x0000);
-                       WR16(dev_addr, SIO_PDR_MD2_CFG__A, 0x0000);
-                       WR16(dev_addr, SIO_PDR_MD3_CFG__A, 0x0000);
-                       WR16(dev_addr, SIO_PDR_MD4_CFG__A, 0x0000);
-                       WR16(dev_addr, SIO_PDR_MD5_CFG__A, 0x0000);
-                       WR16(dev_addr, SIO_PDR_MD6_CFG__A, 0x0000);
-                       WR16(dev_addr, SIO_PDR_MD7_CFG__A, 0x0000);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD1_CFG__A, 0x0000, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD2_CFG__A, 0x0000, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD3_CFG__A, 0x0000, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD4_CFG__A, 0x0000, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD5_CFG__A, 0x0000, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD6_CFG__A, 0x0000, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD7_CFG__A, 0x0000, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
                /*  Enable Monitor Bus output over MPEG pads and ctl input */
-               WR16(dev_addr, SIO_PDR_MON_CFG__A, 0x0000);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MON_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /*  Write nomagic word to enable pdr reg write */
-               WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        } else {
                /*  Write magic word to enable pdr reg write */
-               WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /*  Set MPEG TS pads to inputmode */
-               WR16(dev_addr, SIO_PDR_MSTRT_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MERR_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MCLK_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MVAL_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD0_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD1_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD2_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD3_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD4_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD5_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD6_CFG__A, 0x0000);
-               WR16(dev_addr, SIO_PDR_MD7_CFG__A, 0x0000);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MSTRT_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MERR_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MCLK_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MVAL_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD0_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD1_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD2_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD3_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD4_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD5_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD6_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD7_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /* Enable Monitor Bus output over MPEG pads and ctl input */
-               WR16(dev_addr, SIO_PDR_MON_CFG__A, 0x0000);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MON_CFG__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /* Write nomagic word to enable pdr reg write */
-               WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* save values for restore after re-acquire */
@@ -3046,6 +3341,7 @@ ctrl_get_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
        struct drx_common_attr *common_attr = (struct drx_common_attr *) (NULL);
        enum drx_lock_status lock_status = DRX_NOT_LOCKED;
+       int rc;
        u32 rate_reg = 0;
        u32 data64hi = 0;
        u32 data64lo = 0;
@@ -3067,9 +3363,17 @@ ctrl_get_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
        cfg_data->static_clk = common_attr->mpeg_cfg.static_clk;
        cfg_data->bitrate = 0;
 
-       CHK_ERROR(ctrl_lock_status(demod, &lock_status));
+       rc = ctrl_lock_status(demod, &lock_status);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if ((lock_status == DRX_LOCKED)) {
-               RR32(dev_addr, FEC_OC_RCN_DYN_RATE_LO__A, &rate_reg);
+               rc = DRXJ_DAP.read_reg32func(dev_addr, FEC_OC_RCN_DYN_RATE_LO__A, &rate_reg, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /* Frcn_rate = rate_reg * Fsys / 2 ^ 25 */
                mult32(rate_reg, common_attr->sys_clock_freq * 1000, &data64hi,
                       &data64lo);
@@ -3102,6 +3406,7 @@ static int set_mpegtei_handling(struct drx_demod_instance *demod)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
+       int rc;
        u16 fec_oc_dpr_mode = 0;
        u16 fec_oc_snc_mode = 0;
        u16 fec_oc_ems_mode = 0;
@@ -3109,9 +3414,21 @@ static int set_mpegtei_handling(struct drx_demod_instance *demod)
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
-       RR16(dev_addr, FEC_OC_DPR_MODE__A, &fec_oc_dpr_mode);
-       RR16(dev_addr, FEC_OC_SNC_MODE__A, &fec_oc_snc_mode);
-       RR16(dev_addr, FEC_OC_EMS_MODE__A, &fec_oc_ems_mode);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_DPR_MODE__A, &fec_oc_dpr_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_SNC_MODE__A, &fec_oc_snc_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_EMS_MODE__A, &fec_oc_ems_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* reset to default, allow TEI bit to be changed */
        fec_oc_dpr_mode &= (~FEC_OC_DPR_MODE_ERR_DISABLE__M);
@@ -3127,9 +3444,21 @@ static int set_mpegtei_handling(struct drx_demod_instance *demod)
                fec_oc_ems_mode |= ((0x01) << (FEC_OC_EMS_MODE_MODE__B));
        }
 
-       WR16(dev_addr, FEC_OC_DPR_MODE__A, fec_oc_dpr_mode);
-       WR16(dev_addr, FEC_OC_SNC_MODE__A, fec_oc_snc_mode);
-       WR16(dev_addr, FEC_OC_EMS_MODE__A, fec_oc_ems_mode);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DPR_MODE__A, fec_oc_dpr_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_SNC_MODE__A, fec_oc_snc_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_EMS_MODE__A, fec_oc_ems_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3150,12 +3479,17 @@ static int bit_reverse_mpeg_output(struct drx_demod_instance *demod)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
+       int rc;
        u16 fec_oc_ipr_mode = 0;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
-       RR16(dev_addr, FEC_OC_IPR_MODE__A, &fec_oc_ipr_mode);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_IPR_MODE__A, &fec_oc_ipr_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* reset to default (normal bit order) */
        fec_oc_ipr_mode &= (~FEC_OC_IPR_MODE_REVERSE_ORDER__M);
@@ -3165,7 +3499,11 @@ static int bit_reverse_mpeg_output(struct drx_demod_instance *demod)
                fec_oc_ipr_mode |= FEC_OC_IPR_MODE_REVERSE_ORDER__M;
        }
 
-       WR16(dev_addr, FEC_OC_IPR_MODE__A, fec_oc_ipr_mode);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_IPR_MODE__A, fec_oc_ipr_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3186,13 +3524,17 @@ static int set_mpeg_output_clock_rate(struct drx_demod_instance *demod)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        if (ext_attr->mpeg_output_clock_rate != DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO) {
-               WR16(dev_addr, FEC_OC_DTO_PERIOD__A,
-                    ext_attr->mpeg_output_clock_rate - 1);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_DTO_PERIOD__A, ext_attr->mpeg_output_clock_rate - 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        return (DRX_STS_OK);
@@ -3214,8 +3556,9 @@ static int set_mpeg_start_width(struct drx_demod_instance *demod)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
-       u16 fec_oc_comm_mb = 0;
        struct drx_common_attr *common_attr = (struct drx_common_attr *) NULL;
+       int rc;
+       u16 fec_oc_comm_mb = 0;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -3223,12 +3566,20 @@ static int set_mpeg_start_width(struct drx_demod_instance *demod)
 
        if ((common_attr->mpeg_cfg.static_clk == true)
            && (common_attr->mpeg_cfg.enable_parallel == false)) {
-               RR16(dev_addr, FEC_OC_COMM_MB__A, &fec_oc_comm_mb);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_COMM_MB__A, &fec_oc_comm_mb, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                fec_oc_comm_mb &= ~FEC_OC_COMM_MB_CTL_ON;
                if (ext_attr->mpeg_start_width == DRXJ_MPEG_START_WIDTH_8CLKCYC) {
                        fec_oc_comm_mb |= FEC_OC_COMM_MB_CTL_ON;
                }
-               WR16(dev_addr, FEC_OC_COMM_MB__A, fec_oc_comm_mb);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_COMM_MB__A, fec_oc_comm_mb, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        return (DRX_STS_OK);
@@ -3253,6 +3604,7 @@ ctrl_set_cfg_mpeg_output_misc(struct drx_demod_instance *demod,
                              struct drxj_cfg_mpeg_output_misc *cfg_data)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
+       int rc;
 
        if (cfg_data == NULL) {
                return (DRX_STS_INVALID_ARG);
@@ -3274,10 +3626,26 @@ ctrl_set_cfg_mpeg_output_misc(struct drx_demod_instance *demod,
        ext_attr->mpeg_output_clock_rate = cfg_data->mpeg_output_clock_rate;
        ext_attr->mpeg_start_width = cfg_data->mpeg_start_width;
        /* Don't care what the active standard is, activate setting immediatly */
-       CHK_ERROR(set_mpegtei_handling(demod));
-       CHK_ERROR(bit_reverse_mpeg_output(demod));
-       CHK_ERROR(set_mpeg_output_clock_rate(demod));
-       CHK_ERROR(set_mpeg_start_width(demod));
+       rc = set_mpegtei_handling(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = bit_reverse_mpeg_output(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_mpeg_output_clock_rate(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_mpeg_start_width(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3303,6 +3671,7 @@ ctrl_get_cfg_mpeg_output_misc(struct drx_demod_instance *demod,
                              struct drxj_cfg_mpeg_output_misc *cfg_data)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
+       int rc;
        u16 data = 0;
 
        if (cfg_data == NULL) {
@@ -3316,7 +3685,11 @@ ctrl_get_cfg_mpeg_output_misc(struct drx_demod_instance *demod,
        if (ext_attr->mpeg_output_clock_rate != DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO) {
                cfg_data->mpeg_output_clock_rate = ext_attr->mpeg_output_clock_rate;
        } else {
-               RR16(demod->my_i2c_dev_addr, FEC_OC_DTO_PERIOD__A, &data);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, FEC_OC_DTO_PERIOD__A, &data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                cfg_data->mpeg_output_clock_rate =
                    (enum drxj_mpeg_output_clock_rate) (data + 1);
        }
@@ -3343,14 +3716,27 @@ rw_error:
 static int
 ctrl_get_cfg_hw_cfg(struct drx_demod_instance *demod, struct drxj_cfg_hw_cfg *cfg_data)
 {
+       int rc;
        u16 data = 0;
 
        if (cfg_data == NULL)
                return (DRX_STS_INVALID_ARG);
 
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA);
-       RR16(demod->my_i2c_dev_addr, SIO_PDR_OHW_CFG__A, &data);
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_OHW_CFG__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        cfg_data->i2c_speed = (enum drxji2c_speed) ((data >> 6) & 0x1);
        cfg_data->xtal_freq = (enum drxj_xtal_freq) (data & 0x3);
@@ -3377,6 +3763,7 @@ rw_error:
 static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg *uio_cfg)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
+       int rc;
 
        if ((uio_cfg == NULL) || (demod == NULL)) {
                return DRX_STS_INVALID_ARG;
@@ -3384,7 +3771,11 @@ static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /*  Write magic word to enable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        switch (uio_cfg->uio) {
       /*====================================================================*/
        case DRX_UIO1:
@@ -3400,7 +3791,11 @@ static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg
                case DRX_UIO_MODE_DISABLE:
                        ext_attr->uio_sma_tx_mode = uio_cfg->mode;
                        /* pad configuration register is set 0 - input mode */
-                       WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, 0);
+                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, 0, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                default:
                        return DRX_STS_INVALID_ARG;
@@ -3419,7 +3814,11 @@ static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg
                case DRX_UIO_MODE_DISABLE:
                        ext_attr->uio_sma_rx_mode = uio_cfg->mode;
                        /* pad configuration register is set 0 - input mode */
-                       WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, 0);
+                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, 0, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                default:
                        return DRX_STS_INVALID_ARG;
@@ -3439,7 +3838,11 @@ static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg
                case DRX_UIO_MODE_DISABLE:
                        ext_attr->uio_gpio_mode = uio_cfg->mode;
                        /* pad configuration register is set 0 - input mode */
-                       WR16(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, 0);
+                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, 0, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                default:
                        return DRX_STS_INVALID_ARG;
@@ -3457,7 +3860,11 @@ static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg
                        break;
                case DRX_UIO_MODE_DISABLE:
                        /* pad configuration register is set 0 - input mode */
-                       WR16(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, 0);
+                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, 0, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        ext_attr->uio_irqn_mode = uio_cfg->mode;
                        break;
                case DRX_UIO_MODE_FIRMWARE0:    /* falltrough */
@@ -3472,7 +3879,11 @@ static int ctrl_set_uio_cfg(struct drx_demod_instance *demod, struct drxuio_cfg
        }                       /* switch ( uio_cfg->uio ) */
 
        /*  Write magic word to disable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3534,6 +3945,7 @@ static int
 ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
+       int rc;
        u16 pin_cfg_value = 0;
        u16 value = 0;
 
@@ -3544,7 +3956,11 @@ ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /*  Write magic word to enable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        switch (uio_data->uio) {
       /*====================================================================*/
        case DRX_UIO1:
@@ -3562,17 +3978,29 @@ ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - output mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* use corresponding bit in io data output registar */
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (uio_data->value == false) {
                        value &= 0x7FFF;        /* write zero to 15th bit - 1st UIO */
                } else {
                        value |= 0x8000;        /* write one to 15th bit - 1st UIO */
                }
                /* write back to io data output register */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
    /*======================================================================*/
        case DRX_UIO2:
@@ -3589,17 +4017,29 @@ ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - output mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* use corresponding bit in io data output registar */
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (uio_data->value == false) {
                        value &= 0xBFFF;        /* write zero to 14th bit - 2nd UIO */
                } else {
                        value |= 0x4000;        /* write one to 14th bit - 2nd UIO */
                }
                /* write back to io data output register */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
    /*====================================================================*/
        case DRX_UIO3:
@@ -3616,17 +4056,29 @@ ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - output mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* use corresponding bit in io data output registar */
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (uio_data->value == false) {
                        value &= 0xFFFB;        /* write zero to 2nd bit - 3rd UIO */
                } else {
                        value |= 0x0004;        /* write one to 2nd bit - 3rd UIO */
                }
                /* write back to io data output register */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_HI__A, value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
    /*=====================================================================*/
        case DRX_UIO4:
@@ -3644,17 +4096,29 @@ ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - output mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* use corresponding bit in io data output registar */
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (uio_data->value == false) {
                        value &= 0xEFFF;        /* write zero to 12th bit - 4th UIO */
                } else {
                        value |= 0x1000;        /* write one to 12th bit - 4th UIO */
                }
                /* write back to io data output register */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_OUT_LO__A, value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
       /*=====================================================================*/
        default:
@@ -3662,7 +4126,11 @@ ctrl_uio_write(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
        }                       /* switch ( uio_data->uio ) */
 
        /*  Write magic word to disable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3679,6 +4147,7 @@ rw_error:
 static int ctrl_uio_read(struct drx_demod_instance *demod, struct drxuio_data *uio_data)
 {
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
+       int rc;
        u16 pin_cfg_value = 0;
        u16 value = 0;
 
@@ -3689,7 +4158,11 @@ static int ctrl_uio_read(struct drx_demod_instance *demod, struct drxuio_data *u
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /*  Write magic word to enable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        switch (uio_data->uio) {
       /*====================================================================*/
        case DRX_UIO1:
@@ -3707,9 +4180,17 @@ static int ctrl_uio_read(struct drx_demod_instance *demod, struct drxuio_data *u
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - input mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_LO__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_LO__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if ((value & 0x8000) != 0) {    /* check 15th bit - 1st UIO */
                        uio_data->value = true;
                } else {
@@ -3732,9 +4213,17 @@ static int ctrl_uio_read(struct drx_demod_instance *demod, struct drxuio_data *u
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - input mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_RX_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_LO__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_LO__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                if ((value & 0x4000) != 0) {    /* check 14th bit - 2nd UIO */
                        uio_data->value = true;
@@ -3758,10 +4247,18 @@ static int ctrl_uio_read(struct drx_demod_instance *demod, struct drxuio_data *u
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - input mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_GPIO_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* read io input data registar */
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_HI__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_HI__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if ((value & 0x0004) != 0) {    /* check 2nd bit - 3rd UIO */
                        uio_data->value = true;
                } else {
@@ -3784,10 +4281,18 @@ static int ctrl_uio_read(struct drx_demod_instance *demod, struct drxuio_data *u
                /* io_pad_cfg_drive is set to power 2 (23 mA) */
 
                /* write to io pad configuration register - input mode */
-               WR16(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, pin_cfg_value);
+               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_IRQN_CFG__A, pin_cfg_value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* read io input data registar */
-               RR16(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_LO__A, &value);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SIO_PDR_UIO_IN_LO__A, &value, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if ((value & 0x1000) != 0) {    /* check 12th bit - 4th UIO */
                        uio_data->value = true;
                } else {
@@ -3800,7 +4305,11 @@ static int ctrl_uio_read(struct drx_demod_instance *demod, struct drxuio_data *u
        }                       /* switch ( uio_data->uio ) */
 
        /*  Write magic word to disable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3860,34 +4369,67 @@ ctrl_i2c_bridge(struct drx_demod_instance *demod, bool *bridge_closed)
 */
 static int smart_ant_init(struct drx_demod_instance *demod)
 {
-       u16 data = 0;
        struct drxj_data *ext_attr = NULL;
        struct i2c_device_addr *dev_addr = NULL;
        struct drxuio_cfg uio_cfg = { DRX_UIO1, DRX_UIO_MODE_FIRMWARE_SMA };
+       int rc;
+       u16 data = 0;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /*  Write magic word to enable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* init smart antenna */
-       RR16(dev_addr, SIO_SA_TX_COMMAND__A, &data);
-       if (ext_attr->smart_ant_inverted)
-               WR16(dev_addr, SIO_SA_TX_COMMAND__A,
-                    (data | SIO_SA_TX_COMMAND_TX_INVERT__M)
-                    | SIO_SA_TX_COMMAND_TX_ENABLE__M);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_SA_TX_COMMAND__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       if (ext_attr->smart_ant_inverted){
+
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_SA_TX_COMMAND__A, (data | SIO_SA_TX_COMMAND_TX_INVERT__M) | SIO_SA_TX_COMMAND_TX_ENABLE__M, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }
        else
-               WR16(dev_addr, SIO_SA_TX_COMMAND__A,
-                    (data & (~SIO_SA_TX_COMMAND_TX_INVERT__M))
-                    | SIO_SA_TX_COMMAND_TX_ENABLE__M);
+               {
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_SA_TX_COMMAND__A, (data & (~SIO_SA_TX_COMMAND_TX_INVERT__M)) | SIO_SA_TX_COMMAND_TX_ENABLE__M, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }
 
        /* config SMA_TX pin to smart antenna mode */
-       CHK_ERROR(ctrl_set_uio_cfg(demod, &uio_cfg));
-       WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, 0x13);
-       WR16(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_GPIO_FNC__A, 0x03);
+       rc = ctrl_set_uio_cfg(demod, &uio_cfg);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_CFG__A, 0x13, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_PDR_SMA_TX_GPIO_FNC__A, 0x03, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /*  Write magic word to disable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3906,8 +4448,9 @@ ctrl_set_cfg_smart_ant(struct drx_demod_instance *demod, struct drxj_cfg_smart_a
 {
        struct drxj_data *ext_attr = NULL;
        struct i2c_device_addr *dev_addr = NULL;
-       u16 data = 0;
+       int rc;
        u32 start_time = 0;
+       u16 data = 0;
        static bool bit_inverted;
 
        dev_addr = demod->my_i2c_dev_addr;
@@ -3920,12 +4463,20 @@ ctrl_set_cfg_smart_ant(struct drx_demod_instance *demod, struct drxj_cfg_smart_a
 
        if (bit_inverted != ext_attr->smart_ant_inverted
            || ext_attr->uio_sma_tx_mode != DRX_UIO_MODE_FIRMWARE_SMA) {
-               CHK_ERROR(smart_ant_init(demod));
+               rc = smart_ant_init(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                bit_inverted = ext_attr->smart_ant_inverted;
        }
 
        /*  Write magic word to enable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        switch (smart_ant->io) {
        case DRXJ_SMT_ANT_OUTPUT:
@@ -3936,7 +4487,11 @@ ctrl_set_cfg_smart_ant(struct drx_demod_instance *demod, struct drxj_cfg_smart_a
                 */
                start_time = drxbsp_hst_clock();
                do {
-                       RR16(dev_addr, SIO_SA_TX_STATUS__A, &data);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_SA_TX_STATUS__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                } while ((data & SIO_SA_TX_STATUS_BUSY__M)
                         && ((drxbsp_hst_clock() - start_time) <
                             DRXJ_MAX_WAITTIME));
@@ -3946,30 +4501,33 @@ ctrl_set_cfg_smart_ant(struct drx_demod_instance *demod, struct drxj_cfg_smart_a
                }
 
                /* write to smart antenna configuration register */
-               WR16(dev_addr, SIO_SA_TX_DATA0__A, 0x9200
-                    | ((smart_ant->ctrl_data & 0x0001) << 8)
-                    | ((smart_ant->ctrl_data & 0x0002) << 10)
-                    | ((smart_ant->ctrl_data & 0x0004) << 12)
-                   );
-               WR16(dev_addr, SIO_SA_TX_DATA1__A, 0x4924
-                    | ((smart_ant->ctrl_data & 0x0008) >> 2)
-                    | ((smart_ant->ctrl_data & 0x0010))
-                    | ((smart_ant->ctrl_data & 0x0020) << 2)
-                    | ((smart_ant->ctrl_data & 0x0040) << 4)
-                    | ((smart_ant->ctrl_data & 0x0080) << 6)
-                   );
-               WR16(dev_addr, SIO_SA_TX_DATA2__A, 0x2492
-                    | ((smart_ant->ctrl_data & 0x0100) >> 8)
-                    | ((smart_ant->ctrl_data & 0x0200) >> 6)
-                    | ((smart_ant->ctrl_data & 0x0400) >> 4)
-                    | ((smart_ant->ctrl_data & 0x0800) >> 2)
-                    | ((smart_ant->ctrl_data & 0x1000))
-                    | ((smart_ant->ctrl_data & 0x2000) << 2)
-                   );
-               WR16(dev_addr, SIO_SA_TX_DATA3__A, 0xff8d);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_SA_TX_DATA0__A, 0x9200 | ((smart_ant->ctrl_data & 0x0001) << 8) | ((smart_ant->ctrl_data & 0x0002) << 10) | ((smart_ant->ctrl_data & 0x0004) << 12), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_SA_TX_DATA1__A, 0x4924 | ((smart_ant->ctrl_data & 0x0008) >> 2) | ((smart_ant->ctrl_data & 0x0010)) | ((smart_ant->ctrl_data & 0x0020) << 2) | ((smart_ant->ctrl_data & 0x0040) << 4) | ((smart_ant->ctrl_data & 0x0080) << 6), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_SA_TX_DATA2__A, 0x2492 | ((smart_ant->ctrl_data & 0x0100) >> 8) | ((smart_ant->ctrl_data & 0x0200) >> 6) | ((smart_ant->ctrl_data & 0x0400) >> 4) | ((smart_ant->ctrl_data & 0x0800) >> 2) | ((smart_ant->ctrl_data & 0x1000)) | ((smart_ant->ctrl_data & 0x2000) << 2), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_SA_TX_DATA3__A, 0xff8d, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* trigger the sending */
-               WR16(dev_addr, SIO_SA_TX_LENGTH__A, 56);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_SA_TX_LENGTH__A, 56, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                break;
        case DRXJ_SMT_ANT_INPUT:
@@ -3982,7 +4540,11 @@ ctrl_set_cfg_smart_ant(struct drx_demod_instance *demod, struct drxj_cfg_smart_a
                return (DRX_STS_INVALID_ARG);
        }
        /*  Write magic word to enable pdr reg write               */
-       WR16(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -3991,30 +4553,55 @@ rw_error:
 
 static int scu_command(struct i2c_device_addr *dev_addr, struct drxjscu_cmd *cmd)
 {
-       u16 cur_cmd = 0;
+       int rc;
        u32 start_time = 0;
+       u16 cur_cmd = 0;
 
        /* Check param */
        if (cmd == NULL)
                return (DRX_STS_INVALID_ARG);
 
        /* Wait until SCU command interface is ready to receive command */
-       RR16(dev_addr, SCU_RAM_COMMAND__A, &cur_cmd);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_COMMAND__A, &cur_cmd, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (cur_cmd != DRX_SCU_READY) {
                return (DRX_STS_ERROR);
        }
 
        switch (cmd->parameter_len) {
        case 5:
-               WR16(dev_addr, SCU_RAM_PARAM_4__A, *(cmd->parameter + 4));      /* fallthrough */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_PARAM_4__A, *(cmd->parameter + 4), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /* fallthrough */
        case 4:
-               WR16(dev_addr, SCU_RAM_PARAM_3__A, *(cmd->parameter + 3));      /* fallthrough */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_PARAM_3__A, *(cmd->parameter + 3), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /* fallthrough */
        case 3:
-               WR16(dev_addr, SCU_RAM_PARAM_2__A, *(cmd->parameter + 2));      /* fallthrough */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_PARAM_2__A, *(cmd->parameter + 2), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /* fallthrough */
        case 2:
-               WR16(dev_addr, SCU_RAM_PARAM_1__A, *(cmd->parameter + 1));      /* fallthrough */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_PARAM_1__A, *(cmd->parameter + 1), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /* fallthrough */
        case 1:
-               WR16(dev_addr, SCU_RAM_PARAM_0__A, *(cmd->parameter + 0));      /* fallthrough */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_PARAM_0__A, *(cmd->parameter + 0), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /* fallthrough */
        case 0:
                /* do nothing */
                break;
@@ -4022,12 +4609,20 @@ static int scu_command(struct i2c_device_addr *dev_addr, struct drxjscu_cmd *cmd
                /* this number of parameters is not supported */
                return (DRX_STS_ERROR);
        }
-       WR16(dev_addr, SCU_RAM_COMMAND__A, cmd->command);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_COMMAND__A, cmd->command, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Wait until SCU has processed command */
        start_time = drxbsp_hst_clock();
        do {
-               RR16(dev_addr, SCU_RAM_COMMAND__A, &cur_cmd);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_COMMAND__A, &cur_cmd, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        } while (!(cur_cmd == DRX_SCU_READY)
                 && ((drxbsp_hst_clock() - start_time) < DRXJ_MAX_WAITTIME));
 
@@ -4041,13 +4636,29 @@ static int scu_command(struct i2c_device_addr *dev_addr, struct drxjscu_cmd *cmd
 
                switch (cmd->result_len) {
                case 4:
-                       RR16(dev_addr, SCU_RAM_PARAM_3__A, cmd->result + 3);    /* fallthrough */
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_PARAM_3__A, cmd->result + 3, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /* fallthrough */
                case 3:
-                       RR16(dev_addr, SCU_RAM_PARAM_2__A, cmd->result + 2);    /* fallthrough */
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_PARAM_2__A, cmd->result + 2, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /* fallthrough */
                case 2:
-                       RR16(dev_addr, SCU_RAM_PARAM_1__A, cmd->result + 1);    /* fallthrough */
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_PARAM_1__A, cmd->result + 1, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /* fallthrough */
                case 1:
-                       RR16(dev_addr, SCU_RAM_PARAM_0__A, cmd->result + 0);    /* fallthrough */
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_PARAM_0__A, cmd->result + 0, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /* fallthrough */
                case 0:
                        /* do nothing */
                        break;
@@ -4099,6 +4710,7 @@ int drxj_dap_scu_atomic_read_write_block(struct i2c_device_addr *dev_addr, u32 a
                                              u8 *data, bool read_flag)
 {
        struct drxjscu_cmd scu_cmd;
+       int rc;
        u16 set_param_parameters[15];
        u16 cmd_result[15];
 
@@ -4131,7 +4743,11 @@ int drxj_dap_scu_atomic_read_write_block(struct i2c_device_addr *dev_addr, u32 a
            SCU_RAM_COMMAND_CMD_AUX_SCU_ATOMIC_ACCESS;
        scu_cmd.result = cmd_result;
        scu_cmd.parameter = set_param_parameters;
-       CHK_ERROR(scu_command(dev_addr, &scu_cmd));
+       rc = scu_command(dev_addr, &scu_cmd);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (read_flag == true) {
                int i = 0;
@@ -4218,28 +4834,53 @@ ctrl_i2c_write_read(struct drx_demod_instance *demod, struct drxi2c_data *i2c_da
 */
 static int adc_sync_measurement(struct drx_demod_instance *demod, u16 *count)
 {
-       u16 data = 0;
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
+       u16 data = 0;
 
        dev_addr = demod->my_i2c_dev_addr;
 
        /* Start measurement */
-       WR16(dev_addr, IQM_AF_COMM_EXEC__A, IQM_AF_COMM_EXEC_ACTIVE);
-       WR16(dev_addr, IQM_AF_START_LOCK__A, 1);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_COMM_EXEC__A, IQM_AF_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_START_LOCK__A, 1, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Wait at least 3*128*(1/sysclk) <<< 1 millisec */
-       CHK_ERROR(drxbsp_hst_sleep(1));
+       rc = drxbsp_hst_sleep(1);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        *count = 0;
-       RR16(dev_addr, IQM_AF_PHASE0__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_PHASE0__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (data == 127) {
                *count = *count + 1;
        }
-       RR16(dev_addr, IQM_AF_PHASE1__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_PHASE1__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (data == 127) {
                *count = *count + 1;
        }
-       RR16(dev_addr, IQM_AF_PHASE2__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_PHASE2__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (data == 127) {
                *count = *count + 1;
        }
@@ -4263,23 +4904,40 @@ rw_error:
 
 static int adc_synchronization(struct drx_demod_instance *demod)
 {
-       u16 count = 0;
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
+       u16 count = 0;
 
        dev_addr = demod->my_i2c_dev_addr;
 
-       CHK_ERROR(adc_sync_measurement(demod, &count));
+       rc = adc_sync_measurement(demod, &count);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (count == 1) {
                /* Try sampling on a diffrent edge */
                u16 clk_neg = 0;
 
-               RR16(dev_addr, IQM_AF_CLKNEG__A, &clk_neg);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_CLKNEG__A, &clk_neg, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                clk_neg ^= IQM_AF_CLKNEG_CLKNEGDATA__M;
-               WR16(dev_addr, IQM_AF_CLKNEG__A, clk_neg);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_CLKNEG__A, clk_neg, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
-               CHK_ERROR(adc_sync_measurement(demod, &count));
+               rc = adc_sync_measurement(demod, &count);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        if (count < 2) {
@@ -4300,11 +4958,16 @@ rw_error:
 */
 static int iqm_set_af(struct drx_demod_instance *demod, bool active)
 {
-       u16 data = 0;
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
+       u16 data = 0;
 
        /* Configure IQM */
-       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (!active) {
                data &= ((~IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE)
                         & (~IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE)
@@ -4319,7 +4982,11 @@ static int iqm_set_af(struct drx_demod_instance *demod, bool active)
                         | IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE
                         | IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE);
        }
-       WR16(dev_addr, IQM_AF_STDBY__A, data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -4341,6 +5008,7 @@ ctrl_set_cfg_pdr_safe_mode(struct drx_demod_instance *demod, bool *enable)
 {
        struct drxj_data *ext_attr = NULL;
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
 
        if (enable == NULL)
                return (DRX_STS_INVALID_ARG);
@@ -4349,87 +5017,215 @@ ctrl_set_cfg_pdr_safe_mode(struct drx_demod_instance *demod, bool *enable)
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /*  Write magic word to enable pdr reg write  */
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (*enable == true) {
                bool bridge_enabled = false;
 
                /* MPEG pins to input */
-               WR16(dev_addr, SIO_PDR_MSTRT_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MERR_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MCLK_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MVAL_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD0_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD1_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD2_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD3_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD4_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD5_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD6_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_MD7_CFG__A, DRXJ_PIN_SAFE_MODE);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MSTRT_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MERR_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MCLK_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MVAL_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD0_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD1_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD2_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD3_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD4_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD5_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD6_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_MD7_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* PD_I2C_SDA2 Bridge off, Port2 Inactive
                   PD_I2C_SCL2 Bridge off, Port2 Inactive */
-               CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_enabled));
-               WR16(dev_addr, SIO_PDR_I2C_SDA2_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_I2C_SCL2_CFG__A, DRXJ_PIN_SAFE_MODE);
+               rc = ctrl_i2c_bridge(demod, &bridge_enabled);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2C_SDA2_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2C_SCL2_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /*  PD_GPIO     Store and set to input
                   PD_VSYNC    Store and set to input
                   PD_SMA_RX   Store and set to input
                   PD_SMA_TX   Store and set to input */
-               RR16(dev_addr, SIO_PDR_GPIO_CFG__A,
-                    &ext_attr->pdr_safe_restore_val_gpio);
-               RR16(dev_addr, SIO_PDR_VSYNC_CFG__A,
-                    &ext_attr->pdr_safe_restore_val_v_sync);
-               RR16(dev_addr, SIO_PDR_SMA_RX_CFG__A,
-                    &ext_attr->pdr_safe_restore_val_sma_rx);
-               RR16(dev_addr, SIO_PDR_SMA_TX_CFG__A,
-                    &ext_attr->pdr_safe_restore_val_sma_tx);
-               WR16(dev_addr, SIO_PDR_GPIO_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_VSYNC_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_SMA_RX_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_SMA_TX_CFG__A, DRXJ_PIN_SAFE_MODE);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_PDR_GPIO_CFG__A, &ext_attr->pdr_safe_restore_val_gpio, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_PDR_VSYNC_CFG__A, &ext_attr->pdr_safe_restore_val_v_sync, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_PDR_SMA_RX_CFG__A, &ext_attr->pdr_safe_restore_val_sma_rx, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_PDR_SMA_TX_CFG__A, &ext_attr->pdr_safe_restore_val_sma_tx, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_GPIO_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_VSYNC_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_SMA_RX_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_SMA_TX_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /*  PD_RF_AGC   Analog DAC outputs, cannot be set to input or tristate!
                   PD_IF_AGC   Analog DAC outputs, cannot be set to input or tristate! */
-               CHK_ERROR(iqm_set_af(demod, false));
+               rc = iqm_set_af(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /*  PD_CVBS     Analog DAC output, standby mode
                   PD_SIF      Analog DAC output, standby mode */
-               WR16(dev_addr, ATV_TOP_STDBY__A,
-                    (ATV_TOP_STDBY_SIF_STDBY_STANDBY &
-                     (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE)));
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STDBY__A, (ATV_TOP_STDBY_SIF_STDBY_STANDBY & (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE)), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /*  PD_I2S_CL   Input
                   PD_I2S_DA   Input
                   PD_I2S_WS   Input */
-               WR16(dev_addr, SIO_PDR_I2S_CL_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_I2S_DA_CFG__A, DRXJ_PIN_SAFE_MODE);
-               WR16(dev_addr, SIO_PDR_I2S_WS_CFG__A, DRXJ_PIN_SAFE_MODE);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2S_CL_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2S_DA_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2S_WS_CFG__A, DRXJ_PIN_SAFE_MODE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        } else {
                /* No need to restore MPEG pins;
                   is done in SetStandard/SetChannel */
 
                /* PD_I2C_SDA2 Port2 active
                   PD_I2C_SCL2 Port2 active */
-               WR16(dev_addr, SIO_PDR_I2C_SDA2_CFG__A,
-                    SIO_PDR_I2C_SDA2_CFG__PRE);
-               WR16(dev_addr, SIO_PDR_I2C_SCL2_CFG__A,
-                    SIO_PDR_I2C_SCL2_CFG__PRE);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2C_SDA2_CFG__A, SIO_PDR_I2C_SDA2_CFG__PRE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2C_SCL2_CFG__A, SIO_PDR_I2C_SCL2_CFG__PRE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /*  PD_GPIO     Restore
                   PD_VSYNC    Restore
                   PD_SMA_RX   Restore
                   PD_SMA_TX   Restore */
-               WR16(dev_addr, SIO_PDR_GPIO_CFG__A,
-                    ext_attr->pdr_safe_restore_val_gpio);
-               WR16(dev_addr, SIO_PDR_VSYNC_CFG__A,
-                    ext_attr->pdr_safe_restore_val_v_sync);
-               WR16(dev_addr, SIO_PDR_SMA_RX_CFG__A,
-                    ext_attr->pdr_safe_restore_val_sma_rx);
-               WR16(dev_addr, SIO_PDR_SMA_TX_CFG__A,
-                    ext_attr->pdr_safe_restore_val_sma_tx);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_GPIO_CFG__A, ext_attr->pdr_safe_restore_val_gpio, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_VSYNC_CFG__A, ext_attr->pdr_safe_restore_val_v_sync, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_SMA_RX_CFG__A, ext_attr->pdr_safe_restore_val_sma_rx, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_SMA_TX_CFG__A, ext_attr->pdr_safe_restore_val_sma_tx, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /*  PD_RF_AGC, PD_IF_AGC
                   No need to restore; will be restored in SetStandard/SetChannel */
@@ -4442,7 +5238,11 @@ ctrl_set_cfg_pdr_safe_mode(struct drx_demod_instance *demod, bool *enable)
        }
 
        /*  Write magic word to disable pdr reg write */
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->pdr_safe_mode = *enable;
 
        return (DRX_STS_OK);
@@ -4534,6 +5334,7 @@ static int init_agc(struct drx_demod_instance *demod)
        struct drxj_data *ext_attr = NULL;
        struct drxj_cfg_agc *p_agc_rf_settings = NULL;
        struct drxj_cfg_agc *p_agc_if_settings = NULL;
+       int rc;
        u16 ingain_tgt_max = 0;
        u16 clp_dir_to = 0;
        u16 sns_sum_max = 0;
@@ -4549,6 +5350,7 @@ static int init_agc(struct drx_demod_instance *demod)
        u16 clp_ctrl_mode = 0;
        u16 agc_rf = 0;
        u16 agc_if = 0;
+
        dev_addr = demod->my_i2c_dev_addr;
        common_attr = (struct drx_common_attr *) demod->my_common_attr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -4566,19 +5368,71 @@ static int init_agc(struct drx_demod_instance *demod)
                ki_min = 0x0117;
                ingain_tgt_max = 16383;
                clp_ctrl_mode = 0;
-               WR16(dev_addr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff);
-               WR16(dev_addr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_SUM__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_CYCCNT__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_DIR_WD__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_DIR_STP__A, 1);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_SUM__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_CYCCNT__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_DIR_WD__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_DIR_STP__A, 1);
-               WR16(dev_addr, SCU_RAM_AGC_INGAIN__A, 1024);
-               WR16(dev_addr, SCU_RAM_VSB_AGC_POW_TGT__A, 22600);
-               WR16(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, 13200);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_SUM__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_CYCCNT__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_DIR_WD__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_DIR_STP__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_SUM__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_CYCCNT__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_DIR_WD__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_DIR_STP__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN__A, 1024, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_VSB_AGC_POW_TGT__A, 22600, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, 13200, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                p_agc_if_settings = &(ext_attr->vsb_if_agc_cfg);
                p_agc_rf_settings = &(ext_attr->vsb_rf_agc_cfg);
                break;
@@ -4597,23 +5451,75 @@ static int init_agc(struct drx_demod_instance *demod)
                agc_kiDgain = 0x7;
                ki_min = 0x0117;
                clp_ctrl_mode = 0;
-               WR16(dev_addr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff);
-               WR16(dev_addr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_SUM__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_CYCCNT__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_DIR_WD__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_CLP_DIR_STP__A, 1);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_SUM__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_CYCCNT__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_DIR_WD__A, 0);
-               WR16(dev_addr, SCU_RAM_AGC_SNS_DIR_STP__A, 1);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_SUM__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_CYCCNT__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_DIR_WD__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_DIR_STP__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_SUM__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_CYCCNT__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_DIR_WD__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_DIR_STP__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                p_agc_if_settings = &(ext_attr->qam_if_agc_cfg);
                p_agc_rf_settings = &(ext_attr->qam_rf_agc_cfg);
-               WR16(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
-               RR16(dev_addr, SCU_RAM_AGC_KI__A, &agc_ki);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_AGC_KI__A, &agc_ki, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                agc_ki &= 0xf000;
-               WR16(dev_addr, SCU_RAM_AGC_KI__A, agc_ki);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI__A, agc_ki, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
 #ifndef DRXJ_DIGITAL_ONLY
@@ -4631,7 +5537,11 @@ static int init_agc(struct drx_demod_instance *demod)
                clp_ctrl_mode = 1;
                p_agc_if_settings = &(ext_attr->atv_if_agc_cfg);
                p_agc_rf_settings = &(ext_attr->atv_rf_agc_cfg);
-               WR16(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
        case DRX_STANDARD_NTSC:
        case DRX_STANDARD_PAL_SECAM_BG:
@@ -4650,7 +5560,11 @@ static int init_agc(struct drx_demod_instance *demod)
                p_agc_rf_settings = &(ext_attr->atv_rf_agc_cfg);
                sns_dir_to = (u16) (-9);
                clp_ctrl_mode = 1;
-               WR16(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
        case DRX_STANDARD_PAL_SECAM_L:
        case DRX_STANDARD_PAL_SECAM_LP:
@@ -4667,7 +5581,11 @@ static int init_agc(struct drx_demod_instance *demod)
                clp_ctrl_mode = 1;
                p_agc_if_settings = &(ext_attr->atv_if_agc_cfg);
                p_agc_rf_settings = &(ext_attr->atv_rf_agc_cfg);
-               WR16(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN_TGT__A, p_agc_if_settings->top, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        default:
@@ -4675,32 +5593,136 @@ static int init_agc(struct drx_demod_instance *demod)
        }
 
        /* for new AGC interface */
-       WR16(dev_addr, SCU_RAM_AGC_INGAIN_TGT_MIN__A, p_agc_if_settings->top);
-       WR16(dev_addr, SCU_RAM_AGC_INGAIN__A, p_agc_if_settings->top);  /* Gain fed from inner to outer AGC */
-       WR16(dev_addr, SCU_RAM_AGC_INGAIN_TGT_MAX__A, ingain_tgt_max);
-       WR16(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MIN__A, if_iaccu_hi_tgt_min);
-       WR16(dev_addr, SCU_RAM_AGC_IF_IACCU_HI__A, 0);  /* set to p_agc_settings->top before */
-       WR16(dev_addr, SCU_RAM_AGC_IF_IACCU_LO__A, 0);
-       WR16(dev_addr, SCU_RAM_AGC_RF_IACCU_HI__A, 0);
-       WR16(dev_addr, SCU_RAM_AGC_RF_IACCU_LO__A, 0);
-       WR16(dev_addr, SCU_RAM_AGC_RF_MAX__A, 32767);
-       WR16(dev_addr, SCU_RAM_AGC_CLP_SUM_MAX__A, clp_sum_max);
-       WR16(dev_addr, SCU_RAM_AGC_SNS_SUM_MAX__A, sns_sum_max);
-       WR16(dev_addr, SCU_RAM_AGC_KI_INNERGAIN_MIN__A, ki_innergain_min);
-       WR16(dev_addr, SCU_RAM_AGC_FAST_SNS_CTRL_DELAY__A, 50);
-       WR16(dev_addr, SCU_RAM_AGC_KI_CYCLEN__A, 500);
-       WR16(dev_addr, SCU_RAM_AGC_SNS_CYCLEN__A, 500);
-       WR16(dev_addr, SCU_RAM_AGC_KI_MAXMINGAIN_TH__A, 20);
-       WR16(dev_addr, SCU_RAM_AGC_KI_MIN__A, ki_min);
-       WR16(dev_addr, SCU_RAM_AGC_KI_MAX__A, ki_max);
-       WR16(dev_addr, SCU_RAM_AGC_KI_RED__A, 0);
-       WR16(dev_addr, SCU_RAM_AGC_CLP_SUM_MIN__A, 8);
-       WR16(dev_addr, SCU_RAM_AGC_CLP_CYCLEN__A, 500);
-       WR16(dev_addr, SCU_RAM_AGC_CLP_DIR_TO__A, clp_dir_to);
-       WR16(dev_addr, SCU_RAM_AGC_SNS_SUM_MIN__A, 8);
-       WR16(dev_addr, SCU_RAM_AGC_SNS_DIR_TO__A, sns_dir_to);
-       WR16(dev_addr, SCU_RAM_AGC_FAST_CLP_CTRL_DELAY__A, 50);
-       WR16(dev_addr, SCU_RAM_AGC_CLP_CTRL_MODE__A, clp_ctrl_mode);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN_TGT_MIN__A, p_agc_if_settings->top, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN__A, p_agc_if_settings->top, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* Gain fed from inner to outer AGC */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_INGAIN_TGT_MAX__A, ingain_tgt_max, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MIN__A, if_iaccu_hi_tgt_min, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_IF_IACCU_HI__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* set to p_agc_settings->top before */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_IF_IACCU_LO__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_RF_IACCU_HI__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_RF_IACCU_LO__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_RF_MAX__A, 32767, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_SUM_MAX__A, clp_sum_max, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_SUM_MAX__A, sns_sum_max, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_INNERGAIN_MIN__A, ki_innergain_min, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_FAST_SNS_CTRL_DELAY__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_CYCLEN__A, 500, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_CYCLEN__A, 500, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_MAXMINGAIN_TH__A, 20, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_MIN__A, ki_min, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_MAX__A, ki_max, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI_RED__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_SUM_MIN__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_CYCLEN__A, 500, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_DIR_TO__A, clp_dir_to, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_SUM_MIN__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_SNS_DIR_TO__A, sns_dir_to, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_FAST_CLP_CTRL_DELAY__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_CLP_CTRL_MODE__A, clp_ctrl_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        agc_rf = 0x800 + p_agc_rf_settings->cut_off_current;
        if (common_attr->tuner_rf_agc_pol == true) {
@@ -4712,14 +5734,30 @@ static int init_agc(struct drx_demod_instance *demod)
                agc_rf = 0x87ff - agc_rf;
        }
 
-       WR16(dev_addr, IQM_AF_AGC_RF__A, agc_rf);
-       WR16(dev_addr, IQM_AF_AGC_IF__A, agc_if);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_AGC_RF__A, agc_rf, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_AGC_IF__A, agc_if, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Set/restore Ki DGAIN factor */
-       RR16(dev_addr, SCU_RAM_AGC_KI__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        data &= ~SCU_RAM_AGC_KI_DGAIN__M;
        data |= (agc_kiDgain << SCU_RAM_AGC_KI_DGAIN__B);
-       WR16(dev_addr, SCU_RAM_AGC_KI__A, data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_AGC_KI__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -4740,6 +5778,7 @@ set_frequency(struct drx_demod_instance *demod,
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
        struct drxj_data *ext_attr = demod->my_ext_attr;
+       int rc;
        s32 sampling_frequency = 0;
        s32 frequency_shift = 0;
        s32 if_freq_actual = 0;
@@ -4814,7 +5853,11 @@ set_frequency(struct drx_demod_instance *demod,
 
        /* Program frequency shifter with tuner offset compensation */
        /* frequency_shift += tuner_freq_offset; TODO */
-       WR32(dev_addr, IQM_FS_RATE_OFS_LO__A, iqm_fs_rate_ofs);
+       rc = DRXJ_DAP.write_reg32func(dev_addr, IQM_FS_RATE_OFS_LO__A, iqm_fs_rate_ofs, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->iqm_fs_rate_ofs = iqm_fs_rate_ofs;
        ext_attr->pos_image = (bool) (rf_mirror ^ tuner_mirror ^ select_pos_image);
 
@@ -4841,6 +5884,7 @@ rw_error:
 static int get_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
        u16 rf_gain = 0;
        u16 if_gain = 0;
        u16 if_agc_sns = 0;
@@ -4848,9 +5892,17 @@ static int get_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
        u16 rf_agc_max = 0;
        u16 rf_agc_min = 0;
 
-       RR16(dev_addr, IQM_AF_AGC_IF__A, &if_gain);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_AGC_IF__A, &if_gain, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if_gain &= IQM_AF_AGC_IF__M;
-       RR16(dev_addr, IQM_AF_AGC_RF__A, &rf_gain);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_AGC_RF__A, &rf_gain, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        rf_gain &= IQM_AF_AGC_RF__M;
 
        if_agc_sns = DRXJ_AGC_SNS;
@@ -4862,18 +5914,27 @@ static int get_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
                if (rf_gain > rf_agc_max)
                        *sig_strength = 100;
                else if (rf_gain > rf_agc_min) {
-                       CHK_ZERO(rf_agc_max - rf_agc_min);
+                       if (rf_agc_max == rf_agc_min) {
+                               pr_err("error: rf_agc_max == rf_agc_min\n");
+                               return DRX_STS_ERROR;;
+                       }
                        *sig_strength =
                            75 + 25 * (rf_gain - rf_agc_min) / (rf_agc_max -
                                                             rf_agc_min);
                } else
                        *sig_strength = 75;
        } else if (if_gain > if_agc_sns) {
-               CHK_ZERO(if_agc_top - if_agc_sns);
+               if (if_agc_top == if_agc_sns) {
+                       pr_err("error: if_agc_top == if_agc_sns\n");
+                       return DRX_STS_ERROR;;
+               }
                *sig_strength =
                    20 + 55 * (if_gain - if_agc_sns) / (if_agc_top - if_agc_sns);
        } else {
-               CHK_ZERO(if_agc_sns);
+               if (!if_agc_sns) {
+                       pr_err("error: if_agc_sns is zero!\n");
+                       return DRX_STS_ERROR;;
+               }
                *sig_strength = (20 * if_gain / if_agc_sns);
        }
 
@@ -4895,6 +5956,7 @@ rw_error:
 #ifdef DRXJ_SIGNAL_ACCUM_ERR
 static int get_acc_pkt_err(struct drx_demod_instance *demod, u16 *packet_err)
 {
+       int rc;
        static u16 pkt_err;
        static u16 last_pkt_err;
        u16 data = 0;
@@ -4904,7 +5966,11 @@ static int get_acc_pkt_err(struct drx_demod_instance *demod, u16 *packet_err)
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
        dev_addr = demod->my_i2c_dev_addr;
 
-       RR16(dev_addr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (ext_attr->reset_pkt_err_acc == true) {
                last_pkt_err = data;
                pkt_err = 0;
@@ -4938,12 +6004,17 @@ static int ctrl_set_cfg_reset_pkt_err(struct drx_demod_instance *demod)
 {
 #ifdef DRXJ_SIGNAL_ACCUM_ERR
        struct drxj_data *ext_attr = NULL;
+       int rc;
        u16 packet_error = 0;
 
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
        ext_attr->reset_pkt_err_acc = true;
        /* call to reset counter */
-       CHK_ERROR(get_acc_pkt_err(demod, &packet_error));
+       rc = get_acc_pkt_err(demod, &packet_error);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -4958,13 +6029,18 @@ rw_error:
 */
 static int get_str_freq_offset(struct drx_demod_instance *demod, s32 *str_freq)
 {
+       int rc;
        u32 symbol_frequency_ratio = 0;
        u32 symbol_nom_frequency_ratio = 0;
 
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
        struct drxj_data *ext_attr = demod->my_ext_attr;
 
-       ARR32(dev_addr, IQM_RC_RATE_LO__A, &symbol_frequency_ratio);
+       rc = drxj_dap_atomic_read_reg32(dev_addr, IQM_RC_RATE_LO__A, &symbol_frequency_ratio, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        symbol_nom_frequency_ratio = ext_attr->iqm_rc_rate_ofs;
 
        if (symbol_frequency_ratio > symbol_nom_frequency_ratio)
@@ -5001,6 +6077,7 @@ static int get_ctl_freq_offset(struct drx_demod_instance *demod, s32 *ctl_freq)
        struct drxj_data *ext_attr = NULL;
        struct drx_common_attr *common_attr = NULL;
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -5010,7 +6087,11 @@ static int get_ctl_freq_offset(struct drx_demod_instance *demod, s32 *ctl_freq)
 
        /* both registers are sign extended */
        nominal_frequency = ext_attr->iqm_fs_rate_ofs;
-       ARR32(dev_addr, IQM_FS_RATE_LO__A, (u32 *)&current_frequency);
+       rc = drxj_dap_atomic_read_reg32(dev_addr, IQM_FS_RATE_LO__A, (u32 *)&current_frequency, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (ext_attr->pos_image == true) {
                /* negative image */
@@ -5052,6 +6133,7 @@ set_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
        struct drxj_data *ext_attr = NULL;
        struct drxj_cfg_agc *p_agc_settings = NULL;
        struct drx_common_attr *common_attr = NULL;
+       int rc;
        drx_write_reg16func_t scu_wr16 = NULL;
        drx_read_reg16func_t scu_rr16 = NULL;
 
@@ -5079,13 +6161,24 @@ set_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
                case DRX_AGC_CTRL_AUTO:
 
                        /* Enable RF AGC DAC */
-                       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data |= IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE;
-                       WR16(dev_addr, IQM_AF_STDBY__A, data);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Enable SCU RF AGC loop */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_RF__M;
                        if (ext_attr->standard == DRX_STANDARD_8VSB) {
                                data |= (2 << SCU_RAM_AGC_KI_RF__B);
@@ -5100,20 +6193,24 @@ set_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
                        } else {
                                data &= ~SCU_RAM_AGC_KI_INV_RF_POL__M;
                        }
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, data, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_KI__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Set speed ( using complementary reduction value ) */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI_RED__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI_RED__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_RED_RAGC_RED__M;
-                       CHK_ERROR((*scu_wr16) (dev_addr, SCU_RAM_AGC_KI_RED__A,
-                                              (~
-                                              (agc_settings->
-                                               speed <<
-                                               SCU_RAM_AGC_KI_RED_RAGC_RED__B)
-& SCU_RAM_AGC_KI_RED_RAGC_RED__M)
-                                             | data, 0));
+                       rc = (*scu_wr16) (dev_addr, SCU_RAM_AGC_KI_RED__A,(~(agc_settings->speed << SCU_RAM_AGC_KI_RED_RAGC_RED__B) & SCU_RAM_AGC_KI_RED_RAGC_RED__M) | data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        if (agc_settings->standard == DRX_STANDARD_8VSB)
                                p_agc_settings = &(ext_attr->vsb_if_agc_cfg);
@@ -5126,58 +6223,92 @@ set_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
 
                        /* Set TOP, only if IF-AGC is in AUTO mode */
                        if (p_agc_settings->ctrl_mode == DRX_AGC_CTRL_AUTO) {
-                               CHK_ERROR((*scu_wr16)
-                                         (dev_addr,
-                                          SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A,
-                                          agc_settings->top, 0));
-                               CHK_ERROR((*scu_wr16)
-                                         (dev_addr,
-                                          SCU_RAM_AGC_IF_IACCU_HI_TGT__A,
-                                          agc_settings->top, 0));
+                               rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, agc_settings->top, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT__A, agc_settings->top, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                        }
 
                        /* Cut-Off current */
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_RF_IACCU_HI_CO__A,
-                                  agc_settings->cut_off_current, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_RF_IACCU_HI_CO__A, agc_settings->cut_off_current, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_AGC_CTRL_USER:
 
                        /* Enable RF AGC DAC */
-                       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data |= IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE;
-                       WR16(dev_addr, IQM_AF_STDBY__A, data);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Disable SCU RF AGC loop */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_RF__M;
                        if (common_attr->tuner_rf_agc_pol) {
                                data |= SCU_RAM_AGC_KI_INV_RF_POL__M;
                        } else {
                                data &= ~SCU_RAM_AGC_KI_INV_RF_POL__M;
                        }
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, data, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_KI__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Write value to output pin */
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_RF_IACCU_HI__A,
-                                  agc_settings->output_level, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_RF_IACCU_HI__A, agc_settings->output_level, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_AGC_CTRL_OFF:
 
                        /* Disable RF AGC DAC */
-                       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= (~IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE);
-                       WR16(dev_addr, IQM_AF_STDBY__A, data);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Disable SCU RF AGC loop */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_RF__M;
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, data, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_KI__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                default:
                        return (DRX_STS_INVALID_ARG);
@@ -5229,6 +6360,7 @@ get_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings)
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
        enum drx_standard standard = DRX_STANDARD_UNKNOWN;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -5268,8 +6400,11 @@ get_agc_rf(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings)
             DRXJ_ISQAMSTD(agc_settings->standard)) ||
            (DRXJ_ISATVSTD(ext_attr->standard) &&
             DRXJ_ISATVSTD(agc_settings->standard))) {
-               SARR16(dev_addr, SCU_RAM_AGC_RF_IACCU_HI__A,
-                      &(agc_settings->output_level));
+               rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_AGC_RF_IACCU_HI__A, &(agc_settings->output_level), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        return (DRX_STS_OK);
@@ -5293,6 +6428,7 @@ set_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
        struct drx_common_attr *common_attr = NULL;
        drx_write_reg16func_t scu_wr16 = NULL;
        drx_read_reg16func_t scu_rr16 = NULL;
+       int rc;
 
        common_attr = (struct drx_common_attr *) demod->my_common_attr;
        dev_addr = demod->my_i2c_dev_addr;
@@ -5317,13 +6453,24 @@ set_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
                switch (agc_settings->ctrl_mode) {
                case DRX_AGC_CTRL_AUTO:
                        /* Enable IF AGC DAC */
-                       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data |= IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE;
-                       WR16(dev_addr, IQM_AF_STDBY__A, data);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Enable SCU IF AGC loop */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M;
                        data &= ~SCU_RAM_AGC_KI_IF__M;
                        if (ext_attr->standard == DRX_STANDARD_8VSB) {
@@ -5339,20 +6486,24 @@ set_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
                        } else {
                                data &= ~SCU_RAM_AGC_KI_INV_IF_POL__M;
                        }
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, data, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_KI__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Set speed (using complementary reduction value) */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI_RED__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI_RED__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_RED_IAGC_RED__M;
-                       CHK_ERROR((*scu_wr16) (dev_addr, SCU_RAM_AGC_KI_RED__A,
-                                              (~
-                                              (agc_settings->
-                                               speed <<
-                                               SCU_RAM_AGC_KI_RED_IAGC_RED__B)
-& SCU_RAM_AGC_KI_RED_IAGC_RED__M)
-                                             | data, 0));
+                       rc = (*scu_wr16) (dev_addr, SCU_RAM_AGC_KI_RED__A, (~(agc_settings->speed << SCU_RAM_AGC_KI_RED_IAGC_RED__B) & SCU_RAM_AGC_KI_RED_IAGC_RED__M) | data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        if (agc_settings->standard == DRX_STANDARD_8VSB)
                                p_agc_settings = &(ext_attr->vsb_rf_agc_cfg);
@@ -5365,36 +6516,51 @@ set_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
 
                        /* Restore TOP */
                        if (p_agc_settings->ctrl_mode == DRX_AGC_CTRL_AUTO) {
-                               CHK_ERROR((*scu_wr16)
-                                         (dev_addr,
-                                          SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A,
-                                          p_agc_settings->top, 0));
-                               CHK_ERROR((*scu_wr16)
-                                         (dev_addr,
-                                          SCU_RAM_AGC_IF_IACCU_HI_TGT__A,
-                                          p_agc_settings->top, 0));
+                               rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, p_agc_settings->top, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT__A, p_agc_settings->top, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                        } else {
-                               CHK_ERROR((*scu_wr16)
-                                         (dev_addr,
-                                          SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A,
-                                          0, 0));
-                               CHK_ERROR((*scu_wr16)
-                                         (dev_addr,
-                                          SCU_RAM_AGC_IF_IACCU_HI_TGT__A, 0,
-                                          0));
+                               rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, 0, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT__A, 0, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                        }
                        break;
 
                case DRX_AGC_CTRL_USER:
 
                        /* Enable IF AGC DAC */
-                       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data |= IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE;
-                       WR16(dev_addr, IQM_AF_STDBY__A, data);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Disable SCU IF AGC loop */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M;
                        data |= SCU_RAM_AGC_KI_IF_AGC_DISABLE__M;
                        if (common_attr->tuner_if_agc_pol) {
@@ -5402,38 +6568,59 @@ set_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings,
                        } else {
                                data &= ~SCU_RAM_AGC_KI_INV_IF_POL__M;
                        }
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, data, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_KI__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Write value to output pin */
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A,
-                                  agc_settings->output_level, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, agc_settings->output_level, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
 
                case DRX_AGC_CTRL_OFF:
 
                        /* Disable If AGC DAC */
-                       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= (~IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE);
-                       WR16(dev_addr, IQM_AF_STDBY__A, data);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Disable SCU IF AGC loop */
-                       CHK_ERROR((*scu_rr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, &data, 0));
+                       rc = (*scu_rr16)(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M;
                        data |= SCU_RAM_AGC_KI_IF_AGC_DISABLE__M;
-                       CHK_ERROR((*scu_wr16)
-                                 (dev_addr, SCU_RAM_AGC_KI__A, data, 0));
+                       rc = (*scu_wr16)(dev_addr, SCU_RAM_AGC_KI__A, data, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                default:
                        return (DRX_STS_INVALID_ARG);
                }               /* switch ( agcsettings->ctrl_mode ) */
 
                /* always set the top to support configurations without if-loop */
-               CHK_ERROR((*scu_wr16) (dev_addr,
-                                      SCU_RAM_AGC_INGAIN_TGT_MIN__A,
-                                     agc_settings->top, 0));
+               rc = (*scu_wr16) (dev_addr, SCU_RAM_AGC_INGAIN_TGT_MIN__A, agc_settings->top, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* Store if agc settings */
@@ -5481,6 +6668,7 @@ get_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings)
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
        enum drx_standard standard = DRX_STANDARD_UNKNOWN;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -5521,8 +6709,11 @@ get_agc_if(struct drx_demod_instance *demod, struct drxj_cfg_agc *agc_settings)
            (DRXJ_ISATVSTD(ext_attr->standard) &&
             DRXJ_ISATVSTD(agc_settings->standard))) {
                /* read output level */
-               SARR16(dev_addr, SCU_RAM_AGC_IF_IACCU_HI__A,
-                      &(agc_settings->output_level));
+               rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_AGC_IF_IACCU_HI__A, &(agc_settings->output_level), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        return (DRX_STS_OK);
@@ -5541,11 +6732,16 @@ static int set_iqm_af(struct drx_demod_instance *demod, bool active)
 {
        u16 data = 0;
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
 
        /* Configure IQM */
-       RR16(dev_addr, IQM_AF_STDBY__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_STDBY__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (!active) {
                data &= ((~IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE)
                         & (~IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE)
@@ -5561,7 +6757,11 @@ static int set_iqm_af(struct drx_demod_instance *demod, bool active)
                         | IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE
                         | IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE);
        }
-       WR16(dev_addr, IQM_AF_STDBY__A, data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -5594,8 +6794,9 @@ static int power_down_vsb(struct drx_demod_instance *demod, bool primary)
                /* *parameter   */ NULL,
                /* *result      */ NULL
        };
-       u16 cmd_result = 0;
        struct drx_cfg_mpeg_output cfg_mpeg_output;
+       int rc;
+       u16 cmd_result = 0;
 
        /*
           STOP demodulator
@@ -5607,24 +6808,68 @@ static int power_down_vsb(struct drx_demod_instance *demod, bool primary)
        cmd_scu.result_len = 1;
        cmd_scu.parameter = NULL;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* stop all comm_exec */
-       WR16(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP);
-       WR16(dev_addr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (primary == true) {
-               WR16(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP);
-               CHK_ERROR(set_iqm_af(demod, false));
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_iqm_af(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        } else {
-               WR16(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        cfg_mpeg_output.enable_mpeg_output = false;
-       CHK_ERROR(ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output));
+       rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -5640,6 +6885,7 @@ rw_error:
 static int set_vsb_leak_n_gain(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
 
        const u8 vsb_ffe_leak_gain_ram0[] = {
                DRXJ_16TO8(0x8),        /* FFETRAINLKRATIO1  */
@@ -5830,10 +7076,16 @@ static int set_vsb_leak_n_gain(struct drx_demod_instance *demod)
        };
 
        dev_addr = demod->my_i2c_dev_addr;
-       WRB(dev_addr, VSB_SYSCTRL_RAM0_FFETRAINLKRATIO1__A,
-           sizeof(vsb_ffe_leak_gain_ram0), ((u8 *)vsb_ffe_leak_gain_ram0));
-       WRB(dev_addr, VSB_SYSCTRL_RAM1_FIRRCA1GAIN9__A,
-           sizeof(vsb_ffe_leak_gain_ram1), ((u8 *)vsb_ffe_leak_gain_ram1));
+       rc = DRXJ_DAP.write_block_func(dev_addr, VSB_SYSCTRL_RAM0_FFETRAINLKRATIO1__A, sizeof(vsb_ffe_leak_gain_ram0), ((u8 *)vsb_ffe_leak_gain_ram0), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_block_func(dev_addr, VSB_SYSCTRL_RAM1_FIRRCA1GAIN9__A, sizeof(vsb_ffe_leak_gain_ram1), ((u8 *)vsb_ffe_leak_gain_ram1), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -5850,11 +7102,12 @@ rw_error:
 static int set_vsb(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = NULL;
-       u16 cmd_result = 0;
-       u16 cmd_param = 0;
+       int rc;
        struct drx_common_attr *common_attr = NULL;
        struct drxjscu_cmd cmd_scu;
        struct drxj_data *ext_attr = NULL;
+       u16 cmd_result = 0;
+       u16 cmd_param = 0;
        const u8 vsb_taps_re[] = {
                DRXJ_16TO8(-2), /* re0  */
                DRXJ_16TO8(4),  /* re1  */
@@ -5891,13 +7144,41 @@ static int set_vsb(struct drx_demod_instance *demod)
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /* stop all comm_exec */
-       WR16(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP);
-       WR16(dev_addr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* reset demodulator */
        cmd_scu.command = SCU_RAM_COMMAND_STANDARD_VSB
@@ -5906,105 +7187,313 @@ static int set_vsb(struct drx_demod_instance *demod)
        cmd_scu.result_len = 1;
        cmd_scu.parameter = NULL;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, IQM_AF_DCF_BYPASS__A, 1);
-       WR16(dev_addr, IQM_FS_ADJ_SEL__A, IQM_FS_ADJ_SEL_B_VSB);
-       WR16(dev_addr, IQM_RC_ADJ_SEL__A, IQM_RC_ADJ_SEL_B_VSB);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_DCF_BYPASS__A, 1, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_ADJ_SEL__A, IQM_FS_ADJ_SEL_B_VSB, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_ADJ_SEL__A, IQM_RC_ADJ_SEL_B_VSB, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->iqm_rc_rate_ofs = 0x00AD0D79;
-       WR32(dev_addr, IQM_RC_RATE_OFS_LO__A, ext_attr->iqm_rc_rate_ofs);
-       WR16(dev_addr, VSB_TOP_CFAGC_GAINSHIFT__A, 4);
-       WR16(dev_addr, VSB_TOP_CYGN1TRK__A, 1);
-
-       WR16(dev_addr, IQM_RC_CROUT_ENA__A, 1);
-       WR16(dev_addr, IQM_RC_STRETCH__A, 28);
-       WR16(dev_addr, IQM_RT_ACTIVE__A, 0);
-       WR16(dev_addr, IQM_CF_SYMMETRIC__A, 0);
-       WR16(dev_addr, IQM_CF_MIDTAP__A, 3);
-       WR16(dev_addr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_VSB__M);
-       WR16(dev_addr, IQM_CF_SCALE__A, 1393);
-       WR16(dev_addr, IQM_CF_SCALE_SH__A, 0);
-       WR16(dev_addr, IQM_CF_POW_MEAS_LEN__A, 1);
-
-       WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(vsb_taps_re),
-           ((u8 *)vsb_taps_re));
-       WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(vsb_taps_re),
-           ((u8 *)vsb_taps_re));
-
-       WR16(dev_addr, VSB_TOP_BNTHRESH__A, 330);       /* set higher threshold */
-       WR16(dev_addr, VSB_TOP_CLPLASTNUM__A, 90);      /* burst detection on   */
-       WR16(dev_addr, VSB_TOP_SNRTH_RCA1__A, 0x0042);  /* drop thresholds by 1 dB */
-       WR16(dev_addr, VSB_TOP_SNRTH_RCA2__A, 0x0053);  /* drop thresholds by 2 dB */
-       WR16(dev_addr, VSB_TOP_EQCTRL__A, 0x1); /* cma on               */
-       WR16(dev_addr, SCU_RAM_GPIO__A, 0);     /* GPIO               */
+       rc = DRXJ_DAP.write_reg32func(dev_addr, IQM_RC_RATE_OFS_LO__A, ext_attr->iqm_rc_rate_ofs, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_CFAGC_GAINSHIFT__A, 4, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_CYGN1TRK__A, 1, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_CROUT_ENA__A, 1, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_STRETCH__A, 28, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_ACTIVE__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_SYMMETRIC__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_VSB__M, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_SCALE__A, 1393, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_SCALE_SH__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_POW_MEAS_LEN__A, 1, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(vsb_taps_re), ((u8 *)vsb_taps_re), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(vsb_taps_re), ((u8 *)vsb_taps_re), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_BNTHRESH__A, 330, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* set higher threshold */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_CLPLASTNUM__A, 90, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* burst detection on   */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_SNRTH_RCA1__A, 0x0042, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* drop thresholds by 1 dB */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_SNRTH_RCA2__A, 0x0053, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* drop thresholds by 2 dB */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_EQCTRL__A, 0x1, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* cma on               */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_GPIO__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* GPIO               */
 
        /* Initialize the FEC Subsystem */
-       WR16(dev_addr, FEC_TOP_ANNEX__A, FEC_TOP_ANNEX_D);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_TOP_ANNEX__A, FEC_TOP_ANNEX_D, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        {
                u16 fec_oc_snc_mode = 0;
-               RR16(dev_addr, FEC_OC_SNC_MODE__A, &fec_oc_snc_mode);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_SNC_MODE__A, &fec_oc_snc_mode, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /* output data even when not locked */
-               WR16(dev_addr, FEC_OC_SNC_MODE__A,
-                    fec_oc_snc_mode | FEC_OC_SNC_MODE_UNLOCK_ENABLE__M);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_SNC_MODE__A, fec_oc_snc_mode | FEC_OC_SNC_MODE_UNLOCK_ENABLE__M, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* set clip */
-       WR16(dev_addr, IQM_AF_CLP_LEN__A, 0);
-       WR16(dev_addr, IQM_AF_CLP_TH__A, 470);
-       WR16(dev_addr, IQM_AF_SNS_LEN__A, 0);
-       WR16(dev_addr, VSB_TOP_SNRTH_PT__A, 0xD4);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_CLP_LEN__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_CLP_TH__A, 470, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_SNS_LEN__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_SNRTH_PT__A, 0xD4, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* no transparent, no A&C framing; parity is set in mpegoutput */
        {
                u16 fec_oc_reg_mode = 0;
-               RR16(dev_addr, FEC_OC_MODE__A, &fec_oc_reg_mode);
-               WR16(dev_addr, FEC_OC_MODE__A, fec_oc_reg_mode &
-                    (~(FEC_OC_MODE_TRANSPARENT__M
-                       | FEC_OC_MODE_CLEAR__M | FEC_OC_MODE_RETAIN_FRAMING__M)
-                    ));
+               rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_MODE__A, &fec_oc_reg_mode, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_MODE__A, fec_oc_reg_mode & (~(FEC_OC_MODE_TRANSPARENT__M | FEC_OC_MODE_CLEAR__M | FEC_OC_MODE_RETAIN_FRAMING__M)), 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
-       WR16(dev_addr, FEC_DI_TIMEOUT_LO__A, 0);        /* timeout counter for restarting */
-       WR16(dev_addr, FEC_DI_TIMEOUT_HI__A, 3);
-       WR16(dev_addr, FEC_RS_MODE__A, 0);      /* bypass disabled */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_DI_TIMEOUT_LO__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* timeout counter for restarting */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_DI_TIMEOUT_HI__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_RS_MODE__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }       /* bypass disabled */
        /* initialize RS packet error measurement parameters */
-       WR16(dev_addr, FEC_RS_MEASUREMENT_PERIOD__A, FEC_RS_MEASUREMENT_PERIOD);
-       WR16(dev_addr, FEC_RS_MEASUREMENT_PRESCALE__A,
-            FEC_RS_MEASUREMENT_PRESCALE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_RS_MEASUREMENT_PERIOD__A, FEC_RS_MEASUREMENT_PERIOD, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_RS_MEASUREMENT_PRESCALE__A, FEC_RS_MEASUREMENT_PRESCALE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* init measurement period of MER/SER */
-       WR16(dev_addr, VSB_TOP_MEASUREMENT_PERIOD__A,
-            VSB_TOP_MEASUREMENT_PERIOD);
-       WR32(dev_addr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0);
-       WR16(dev_addr, SCU_RAM_FEC_MEAS_COUNT__A, 0);
-       WR16(dev_addr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_MEASUREMENT_PERIOD__A, VSB_TOP_MEASUREMENT_PERIOD, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg32func(dev_addr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_FEC_MEAS_COUNT__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, VSB_TOP_CKGN1TRK__A, 128);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_CKGN1TRK__A, 128, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* B-Input to ADC, PGA+filter in standby */
        if (ext_attr->has_lna == false) {
-               WR16(dev_addr, IQM_AF_AMUX__A, 0x02);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_AMUX__A, 0x02, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        };
 
        /* turn on IQMAF. It has to be in front of setAgc**() */
-       CHK_ERROR(set_iqm_af(demod, true));
-       CHK_ERROR(adc_synchronization(demod));
+       rc = set_iqm_af(demod, true);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = adc_synchronization(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       CHK_ERROR(init_agc(demod));
-       CHK_ERROR(set_agc_if(demod, &(ext_attr->vsb_if_agc_cfg), false));
-       CHK_ERROR(set_agc_rf(demod, &(ext_attr->vsb_rf_agc_cfg), false));
+       rc = init_agc(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_agc_if(demod, &(ext_attr->vsb_if_agc_cfg), false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_agc_rf(demod, &(ext_attr->vsb_rf_agc_cfg), false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        {
                /* TODO fix this, store a struct drxj_cfg_afe_gain structure in struct drxj_data instead
                   of only the gain */
                struct drxj_cfg_afe_gain vsb_pga_cfg = { DRX_STANDARD_8VSB, 0 };
 
                vsb_pga_cfg.gain = ext_attr->vsb_pga_cfg;
-               CHK_ERROR(ctrl_set_cfg_afe_gain(demod, &vsb_pga_cfg));
+               rc = ctrl_set_cfg_afe_gain(demod, &vsb_pga_cfg);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+       }
+       rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->vsb_pre_saw_cfg));
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
        }
-       CHK_ERROR(ctrl_set_cfg_pre_saw(demod, &(ext_attr->vsb_pre_saw_cfg)));
 
        /* Mpeg output has to be in front of FEC active */
-       CHK_ERROR(set_mpegtei_handling(demod));
-       CHK_ERROR(bit_reverse_mpeg_output(demod));
-       CHK_ERROR(set_mpeg_start_width(demod));
+       rc = set_mpegtei_handling(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = bit_reverse_mpeg_output(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_mpeg_start_width(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        {
                /* TODO: move to set_standard after hardware reset value problem is solved */
                /* Configure initial MPEG output */
@@ -6020,7 +7509,11 @@ static int set_vsb(struct drx_demod_instance *demod)
                cfg_mpeg_output.invert_clk = common_attr->mpeg_cfg.invert_clk;
                cfg_mpeg_output.static_clk = common_attr->mpeg_cfg.static_clk;
                cfg_mpeg_output.bitrate = common_attr->mpeg_cfg.bitrate;
-               CHK_ERROR(ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output));
+               rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* TBD: what parameters should be set */
@@ -6031,30 +7524,81 @@ static int set_vsb(struct drx_demod_instance *demod)
        cmd_scu.result_len = 1;
        cmd_scu.parameter = &cmd_param;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
-
-       WR16(dev_addr, VSB_TOP_BEAGC_GAINSHIFT__A, 0x0004);
-       WR16(dev_addr, VSB_TOP_SNRTH_PT__A, 0x00D2);
-       WR16(dev_addr, VSB_TOP_SYSSMTRNCTRL__A, VSB_TOP_SYSSMTRNCTRL__PRE
-            | VSB_TOP_SYSSMTRNCTRL_NCOTIMEOUTCNTEN__M);
-       WR16(dev_addr, VSB_TOP_BEDETCTRL__A, 0x142);
-       WR16(dev_addr, VSB_TOP_LBAGCREFLVL__A, 640);
-       WR16(dev_addr, VSB_TOP_CYGN1ACQ__A, 4);
-       WR16(dev_addr, VSB_TOP_CYGN1TRK__A, 2);
-       WR16(dev_addr, VSB_TOP_CYGN2TRK__A, 3);
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       /* start demodulator */
-       cmd_scu.command = SCU_RAM_COMMAND_STANDARD_VSB
-           | SCU_RAM_COMMAND_CMD_DEMOD_START;
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_BEAGC_GAINSHIFT__A, 0x0004, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_SNRTH_PT__A, 0x00D2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_SYSSMTRNCTRL__A, VSB_TOP_SYSSMTRNCTRL__PRE | VSB_TOP_SYSSMTRNCTRL_NCOTIMEOUTCNTEN__M, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_BEDETCTRL__A, 0x142, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_LBAGCREFLVL__A, 640, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_CYGN1ACQ__A, 4, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_CYGN1TRK__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_CYGN2TRK__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       /* start demodulator */
+       cmd_scu.command = SCU_RAM_COMMAND_STANDARD_VSB
+           | SCU_RAM_COMMAND_CMD_DEMOD_START;
        cmd_scu.parameter_len = 0;
        cmd_scu.result_len = 1;
        cmd_scu.parameter = NULL;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE);
-       WR16(dev_addr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_ACTIVE);
-       WR16(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6068,13 +7612,18 @@ rw_error:
 */
 static int get_vsb_post_rs_pck_err(struct i2c_device_addr *dev_addr, u16 *pck_errs)
 {
+       int rc;
        u16 data = 0;
        u16 period = 0;
        u16 prescale = 0;
        u16 packet_errorsMant = 0;
        u16 packet_errorsExp = 0;
 
-       RR16(dev_addr, FEC_RS_NR_FAILURES__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_RS_NR_FAILURES__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        packet_errorsMant = data & FEC_RS_NR_FAILURES_FIXED_MANT__M;
        packet_errorsExp = (data & FEC_RS_NR_FAILURES_EXP__M)
            >> FEC_RS_NR_FAILURES_EXP__B;
@@ -6082,7 +7631,10 @@ static int get_vsb_post_rs_pck_err(struct i2c_device_addr *dev_addr, u16 *pck_er
        prescale = FEC_RS_MEASUREMENT_PRESCALE;
        /* packet error rate = (error packet number) per second */
        /* 77.3 us is time for per packet */
-       CHK_ZERO(period * prescale);
+       if (period * prescale == 0) {
+               pr_err("error: period and/or prescale is zero!\n");
+               return DRX_STS_ERROR;;
+       }
        *pck_errs =
            (u16) frac_times1e6(packet_errorsMant * (1 << packet_errorsExp),
                                 (period * prescale * 77));
@@ -6099,13 +7651,18 @@ rw_error:
 */
 static int get_vs_bpost_viterbi_ber(struct i2c_device_addr *dev_addr, u32 *ber)
 {
+       int rc;
        u16 data = 0;
        u16 period = 0;
        u16 prescale = 0;
        u16 bit_errors_mant = 0;
        u16 bit_errors_exp = 0;
 
-       RR16(dev_addr, FEC_RS_NR_BIT_ERRORS__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_RS_NR_BIT_ERRORS__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        period = FEC_RS_MEASUREMENT_PERIOD;
        prescale = FEC_RS_MEASUREMENT_PRESCALE;
 
@@ -6116,7 +7673,10 @@ static int get_vs_bpost_viterbi_ber(struct i2c_device_addr *dev_addr, u32 *ber)
        if (((bit_errors_mant << bit_errors_exp) >> 3) > 68700)
                *ber = 26570;
        else {
-               CHK_ZERO(period * prescale);
+               if (period * prescale == 0) {
+                       pr_err("error: period and/or prescale is zero!\n");
+                       return DRX_STS_ERROR;;
+               }
                *ber =
                    frac_times1e6(bit_errors_mant <<
                                 ((bit_errors_exp >
@@ -6138,8 +7698,13 @@ rw_error:
 static int get_vs_bpre_viterbi_ber(struct i2c_device_addr *dev_addr, u32 *ber)
 {
        u16 data = 0;
+       int rc;
 
-       RR16(dev_addr, VSB_TOP_NR_SYM_ERRS__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, VSB_TOP_NR_SYM_ERRS__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        *ber =
            frac_times1e6(data,
                         VSB_TOP_MEASUREMENT_PERIOD * SYMBOLS_PER_SEGMENT);
@@ -6156,13 +7721,18 @@ rw_error:
 */
 static int get_vsb_symb_err(struct i2c_device_addr *dev_addr, u32 *ser)
 {
+       int rc;
        u16 data = 0;
        u16 period = 0;
        u16 prescale = 0;
        u16 symb_errors_mant = 0;
        u16 symb_errors_exp = 0;
 
-       RR16(dev_addr, FEC_RS_NR_SYMBOL_ERRORS__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_RS_NR_SYMBOL_ERRORS__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        period = FEC_RS_MEASUREMENT_PERIOD;
        prescale = FEC_RS_MEASUREMENT_PRESCALE;
 
@@ -6170,7 +7740,10 @@ static int get_vsb_symb_err(struct i2c_device_addr *dev_addr, u32 *ser)
        symb_errors_exp = (data & FEC_RS_NR_SYMBOL_ERRORS_EXP__M)
            >> FEC_RS_NR_SYMBOL_ERRORS_EXP__B;
 
-       CHK_ZERO(period * prescale);
+       if (period * prescale == 0) {
+               pr_err("error: period and/or prescale is zero!\n");
+               return DRX_STS_ERROR;;
+       }
        *ser = (u32) frac_times1e6((symb_errors_mant << symb_errors_exp) * 1000,
                                    (period * prescale * 77318));
 
@@ -6186,9 +7759,14 @@ rw_error:
 */
 static int get_vsbmer(struct i2c_device_addr *dev_addr, u16 *mer)
 {
+       int rc;
        u16 data_hi = 0;
 
-       RR16(dev_addr, VSB_TOP_ERR_ENERGY_H__A, &data_hi);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, VSB_TOP_ERR_ENERGY_H__A, &data_hi, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        *mer =
            (u16) (log1_times100(21504) - log1_times100((data_hi << 6) / 52));
 
@@ -6210,6 +7788,7 @@ static int
 ctrl_get_vsb_constel(struct drx_demod_instance *demod, struct drx_complex *complex_nr)
 {
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
                                       /**< device address                    */
        u16 vsb_top_comm_mb = 0;               /**< VSB SL MB configuration           */
        u16 vsb_top_comm_mbInit = 0;    /**< VSB SL MB intial configuration    */
@@ -6224,21 +7803,41 @@ ctrl_get_vsb_constel(struct drx_demod_instance *demod, struct drx_complex *compl
        /* Needs to be checked when external interface PG is updated */
 
        /* Configure MB (Monitor bus) */
-       RR16(dev_addr, VSB_TOP_COMM_MB__A, &vsb_top_comm_mbInit);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, VSB_TOP_COMM_MB__A, &vsb_top_comm_mbInit, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* set observe flag & MB mux */
        vsb_top_comm_mb = (vsb_top_comm_mbInit |
                        VSB_TOP_COMM_MB_OBS_OBS_ON |
                        VSB_TOP_COMM_MB_MUX_OBS_VSB_TCMEQ_2);
-       WR16(dev_addr, VSB_TOP_COMM_MB__A, vsb_top_comm_mb);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_COMM_MB__A, vsb_top_comm_mb, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Enable MB grabber in the FEC OC */
-       WR16(dev_addr, FEC_OC_OCR_MODE__A, FEC_OC_OCR_MODE_GRAB_ENABLE__M);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_OCR_MODE__A, FEC_OC_OCR_MODE_GRAB_ENABLE__M, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Disable MB grabber in the FEC OC */
-       WR16(dev_addr, FEC_OC_OCR_MODE__A, 0x0);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_OCR_MODE__A, 0x0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* read data */
-       RR32(dev_addr, FEC_OC_OCR_GRAB_RD1__A, &data);
+       rc = DRXJ_DAP.read_reg32func(dev_addr, FEC_OC_OCR_GRAB_RD1__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        re = (u16) (((data >> 10) & 0x300) | ((data >> 2) & 0xff));
        if (re & 0x0200) {
                re |= 0xfc00;
@@ -6247,7 +7846,11 @@ ctrl_get_vsb_constel(struct drx_demod_instance *demod, struct drx_complex *compl
        complex_nr->im = 0;
 
        /* Restore MB (Monitor bus) */
-       WR16(dev_addr, VSB_TOP_COMM_MB__A, vsb_top_comm_mbInit);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, VSB_TOP_COMM_MB__A, vsb_top_comm_mbInit, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6279,17 +7882,26 @@ static int power_down_qam(struct drx_demod_instance *demod, bool primary)
                /* *parameter   */ NULL,
                /* *result      */ NULL
        };
-       u16 cmd_result = 0;
+       int rc;
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
        struct drx_cfg_mpeg_output cfg_mpeg_output;
+       u16 cmd_result = 0;
 
        /*
           STOP demodulator
           resets IQM, QAM and FEC HW blocks
         */
        /* stop all comm_exec */
-       WR16(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP);
-       WR16(dev_addr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        cmd_scu.command = SCU_RAM_COMMAND_STANDARD_QAM |
            SCU_RAM_COMMAND_CMD_DEMOD_STOP;
@@ -6297,21 +7909,57 @@ static int power_down_qam(struct drx_demod_instance *demod, bool primary)
        cmd_scu.result_len = 1;
        cmd_scu.parameter = NULL;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (primary == true) {
-               WR16(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP);
-               CHK_ERROR(set_iqm_af(demod, false));
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_iqm_af(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        } else {
-               WR16(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        cfg_mpeg_output.enable_mpeg_output = false;
-       CHK_ERROR(ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output));
+       rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6343,6 +7991,7 @@ set_qam_measurement(struct drx_demod_instance *demod,
 {
        struct i2c_device_addr *dev_addr = NULL;        /* device address for I2C writes */
        struct drxj_data *ext_attr = NULL;      /* Global data container for DRXJ specif data */
+       int rc;
        u32 fec_bits_desired = 0;       /* BER accounting period */
        u16 fec_rs_plen = 0;    /* defines RS BER measurement period */
        u16 fec_rs_prescale = 0;        /* ReedSolomon Measurement Prescale */
@@ -6401,7 +8050,10 @@ set_qam_measurement(struct drx_demod_instance *demod,
 
        ext_attr->fec_rs_plen = fec_rs_plen;    /* for getSigQual */
        fec_rs_bit_cnt = fec_rs_prescale * fec_rs_plen; /* temp storage   */
-       CHK_ZERO(fec_rs_bit_cnt);
+       if (fec_rs_bit_cnt == 0) {
+               pr_err("error: fec_rs_bit_cnt is zero!\n");
+               return DRX_STS_ERROR;;
+       }
        fec_rs_period = fec_bits_desired / fec_rs_bit_cnt + 1;  /* ceil */
        if (ext_attr->standard != DRX_STANDARD_ITU_B)
                fec_oc_snc_fail_period = fec_rs_period;
@@ -6433,14 +8085,38 @@ set_qam_measurement(struct drx_demod_instance *demod,
                return (DRX_STS_INVALID_ARG);
        }
 
-       WR16(dev_addr, FEC_OC_SNC_FAIL_PERIOD__A, (u16) fec_oc_snc_fail_period);
-       WR16(dev_addr, FEC_RS_MEASUREMENT_PERIOD__A, (u16) fec_rs_period);
-       WR16(dev_addr, FEC_RS_MEASUREMENT_PRESCALE__A, fec_rs_prescale);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_SNC_FAIL_PERIOD__A, (u16)fec_oc_snc_fail_period, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_RS_MEASUREMENT_PERIOD__A, (u16)fec_rs_period, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_RS_MEASUREMENT_PRESCALE__A, fec_rs_prescale, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->fec_rs_period = (u16) fec_rs_period;
        ext_attr->fec_rs_prescale = fec_rs_prescale;
-       WR32(dev_addr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0);
-       WR16(dev_addr, SCU_RAM_FEC_MEAS_COUNT__A, 0);
-       WR16(dev_addr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0);
+       rc = DRXJ_DAP.write_reg32func(dev_addr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_FEC_MEAS_COUNT__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (ext_attr->standard == DRX_STANDARD_ITU_B) {
                /* Parameters for Viterbi Decoder */
@@ -6471,7 +8147,10 @@ set_qam_measurement(struct drx_demod_instance *demod,
                default:
                        return (DRX_STS_INVALID_ARG);
                }
-               CHK_ZERO(qam_vd_period);
+               if (qam_vd_period == 0) {
+                       pr_err("error: qam_vd_period is zero!\n");
+                       return DRX_STS_ERROR;;
+               }
                qam_vd_period = fec_bits_desired / qam_vd_period;
                /* limit to max 16 bit value (I2C register width) if needed */
                if (qam_vd_period > 0xFFFF)
@@ -6480,9 +8159,16 @@ set_qam_measurement(struct drx_demod_instance *demod,
                /* a(16 bit) * b(16 bit) = 32 bit result => mult32 not needed */
                qam_vd_bit_cnt *= qam_vd_period;
 
-               WR16(dev_addr, QAM_VD_MEASUREMENT_PERIOD__A,
-                    (u16) qam_vd_period);
-               WR16(dev_addr, QAM_VD_MEASUREMENT_PRESCALE__A, qam_vd_prescale);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_VD_MEASUREMENT_PERIOD__A, (u16)qam_vd_period, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_VD_MEASUREMENT_PRESCALE__A, qam_vd_prescale, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->qam_vd_period = (u16) qam_vd_period;
                ext_attr->qam_vd_prescale = qam_vd_prescale;
        }
@@ -6503,6 +8189,7 @@ rw_error:
 static int set_qam16(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
        const u8 qam_dq_qual_fun[] = {
                DRXJ_16TO8(2),  /* fun0  */
                DRXJ_16TO8(2),  /* fun1  */
@@ -6520,52 +8207,206 @@ static int set_qam16(struct drx_demod_instance *demod)
                DRXJ_16TO8(13517),      /* RAD5  */
        };
 
-       WRB(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun),
-           ((u8 *)qam_dq_qual_fun));
-       WRB(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad),
-           ((u8 *)qam_eq_cma_rad));
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 140);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 50);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 120);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 230);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 95);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 105);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 220);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 25);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 6);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16) (-24));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16) (-65));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) (-127));
-
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 50);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 240);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32);
-
-       WR16(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 40960);
+       rc = DRXJ_DAP.write_block_func(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun), ((u8 *)qam_dq_qual_fun), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_block_func(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad), ((u8 *)qam_eq_cma_rad), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 140, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 120, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 230, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 95, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 105, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 220, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 25, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 6, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16)(-24), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16)(-65), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16)(-127), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 240, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 40960, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6583,6 +8424,7 @@ rw_error:
 static int set_qam32(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
        const u8 qam_dq_qual_fun[] = {
                DRXJ_16TO8(3),  /* fun0  */
                DRXJ_16TO8(3),  /* fun1  */
@@ -6600,52 +8442,206 @@ static int set_qam32(struct drx_demod_instance *demod)
                DRXJ_16TO8(6707),       /* RAD5  */
        };
 
-       WRB(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun),
-           ((u8 *)qam_dq_qual_fun));
-       WRB(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad),
-           ((u8 *)qam_eq_cma_rad));
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 90);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 50);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 170);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 100);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 140);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, (u16) (-8));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, (u16) (-16));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16) (-26));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16) (-56));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) (-86));
-
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 50);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 176);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 8);
-
-       WR16(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 20480);
+       rc = DRXJ_DAP.write_block_func(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun), ((u8 *)qam_dq_qual_fun), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_block_func(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad), ((u8 *)qam_eq_cma_rad), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 90, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 170, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 100, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 140, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, (u16)(-8), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, (u16)(-16), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16)(-26), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16)(-56), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16)(-86), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 176, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 20480, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6663,6 +8659,7 @@ rw_error:
 static int set_qam64(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
        const u8 qam_dq_qual_fun[] = {  /* this is hw reset value. no necessary to re-write */
                DRXJ_16TO8(4),  /* fun0  */
                DRXJ_16TO8(4),  /* fun1  */
@@ -6680,52 +8677,206 @@ static int set_qam64(struct drx_demod_instance *demod)
                DRXJ_16TO8(15609),      /* RAD5  */
        };
 
-       WRB(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun),
-           ((u8 *)qam_dq_qual_fun));
-       WRB(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad),
-           ((u8 *)qam_eq_cma_rad));
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 105);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 60);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 195);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 84);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 141);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 7);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 0);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16) (-15));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16) (-45));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) (-80));
-
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 30);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 160);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32);
-
-       WR16(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 43008);
+       rc = DRXJ_DAP.write_block_func(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun), ((u8 *)qam_dq_qual_fun), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_block_func(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad), ((u8 *)qam_eq_cma_rad), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 105, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 60, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 195, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 84, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 141, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 7, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16)(-15), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16)(-45), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16)(-80), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 30, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 160, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 43008, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6743,6 +8894,7 @@ rw_error:
 static int set_qam128(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
        const u8 qam_dq_qual_fun[] = {
                DRXJ_16TO8(6),  /* fun0  */
                DRXJ_16TO8(6),  /* fun1  */
@@ -6760,52 +8912,206 @@ static int set_qam128(struct drx_demod_instance *demod)
                DRXJ_16TO8(7238),       /* RAD5  */
        };
 
-       WRB(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun),
-           ((u8 *)qam_dq_qual_fun));
-       WRB(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad),
-           ((u8 *)qam_eq_cma_rad));
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 50);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 60);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 140);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 100);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 65);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 5);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 3);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16) (-1));
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) (-23));
-
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 20);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 144);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16);
-
-       WR16(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 20992);
+       rc = DRXJ_DAP.write_block_func(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun), ((u8 *)qam_dq_qual_fun), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_block_func(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad), ((u8 *)qam_eq_cma_rad), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 60, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 140, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 100, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 65, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 5, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16)(-1), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16)(-23), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 20, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 144, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 20992, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6823,6 +9129,7 @@ rw_error:
 static int set_qam256(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
        const u8 qam_dq_qual_fun[] = {
                DRXJ_16TO8(8),  /* fun0  */
                DRXJ_16TO8(8),  /* fun1  */
@@ -6840,52 +9147,206 @@ static int set_qam256(struct drx_demod_instance *demod)
                DRXJ_16TO8(15356),      /* RAD5  */
        };
 
-       WRB(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun),
-           ((u8 *)qam_dq_qual_fun));
-       WRB(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad),
-           ((u8 *)qam_eq_cma_rad));
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 50);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 60);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 150);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 110);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3);
-
-       WR16(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 74);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 18);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 13);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, 7);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 0);
-       WR16(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) (-8));
-
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 50);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 25);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 80);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15);
-       WR16(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16);
-
-       WR16(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 43520);
+       rc = DRXJ_DAP.write_block_func(dev_addr, QAM_DQ_QUAL_FUN0__A, sizeof(qam_dq_qual_fun), ((u8 *)qam_dq_qual_fun), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_block_func(dev_addr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qam_eq_cma_rad), ((u8 *)qam_eq_cma_rad), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RTH__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FTH__A, 60, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_PTH__A, 100, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_QTH__A, 150, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_CTH__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MTH__A, 110, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 74, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 18, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 13, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, 7, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16)(-8), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_FINE__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CA_COARSE__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 50, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CP_COARSE__A, 255, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_FINE__A, 2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 25, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CI_COARSE__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EP_COARSE__A, 24, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_FINE__A, 12, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_EI_COARSE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_FINE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF_COARSE__A, 80, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_FINE__A, 5, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_SL_SIG_POWER__A, 43520, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -6911,9 +9372,10 @@ set_qam(struct drx_demod_instance *demod,
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
        struct drx_common_attr *common_attr = NULL;
-       u16 cmd_result = 0;
+       int rc;
        u32 adc_frequency = 0;
        u32 iqm_rc_rate = 0;
+       u16 cmd_result = 0;
        u16 lc_symbol_freq = 0;
        u16 iqm_rc_stretch = 0;
        u16 set_env_parameters = 0;
@@ -7070,7 +9532,10 @@ set_qam(struct drx_demod_instance *demod,
                        }
                } else {
                        adc_frequency = (common_attr->sys_clock_freq * 1000) / 3;
-                       CHK_ZERO(channel->symbolrate);
+                       if (channel->symbolrate == 0) {
+                               pr_err("error: channel symbolrate is zero!\n");
+                               return DRX_STS_ERROR;;
+                       }
                        iqm_rc_rate =
                            (adc_frequency / channel->symbolrate) * (1 << 21) +
                            (frac28
@@ -7111,13 +9576,41 @@ set_qam(struct drx_demod_instance *demod,
                   resets SCU variables
                 */
                /* stop all comm_exec */
-               WR16(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP);
-               WR16(dev_addr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                cmd_scu.command = SCU_RAM_COMMAND_STANDARD_QAM |
                    SCU_RAM_COMMAND_CMD_DEMOD_RESET;
@@ -7125,7 +9618,11 @@ set_qam(struct drx_demod_instance *demod,
                cmd_scu.result_len = 1;
                cmd_scu.parameter = NULL;
                cmd_scu.result = &cmd_result;
-               CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+               rc = scu_command(dev_addr, &cmd_scu);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) {
@@ -7140,7 +9637,11 @@ set_qam(struct drx_demod_instance *demod,
                cmd_scu.result_len = 1;
                cmd_scu.parameter = &set_env_parameters;
                cmd_scu.result = &cmd_result;
-               CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+               rc = scu_command(dev_addr, &cmd_scu);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                cmd_scu.command = SCU_RAM_COMMAND_STANDARD_QAM |
                    SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM;
@@ -7148,168 +9649,457 @@ set_qam(struct drx_demod_instance *demod,
                cmd_scu.result_len = 1;
                cmd_scu.parameter = set_param_parameters;
                cmd_scu.result = &cmd_result;
-               CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+               rc = scu_command(dev_addr, &cmd_scu);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                /* set symbol rate */
-               WR32(dev_addr, IQM_RC_RATE_OFS_LO__A, iqm_rc_rate);
+               rc = DRXJ_DAP.write_reg32func(dev_addr, IQM_RC_RATE_OFS_LO__A, iqm_rc_rate, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->iqm_rc_rate_ofs = iqm_rc_rate;
-               CHK_ERROR(set_qam_measurement
-                         (demod, channel->constellation, channel->symbolrate));
+               rc = set_qam_measurement(demod, channel->constellation, channel->symbolrate);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
        /* STEP 3: enable the system in a mode where the ADC provides valid signal
           setup constellation independent registers */
        /* from qam_cmd.py script (qam_driver_b) */
        /* TODO: remove re-writes of HW reset values */
        if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_SPECTRUM)) {
-               CHK_ERROR(set_frequency(demod, channel, tuner_freq_offset));
+               rc = set_frequency(demod, channel, tuner_freq_offset);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) {
 
-               WR16(dev_addr, QAM_LC_SYMBOL_FREQ__A, lc_symbol_freq);
-               WR16(dev_addr, IQM_RC_STRETCH__A, iqm_rc_stretch);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_SYMBOL_FREQ__A, lc_symbol_freq, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_STRETCH__A, iqm_rc_stretch, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        if (op & QAM_SET_OP_ALL) {
                if (ext_attr->has_lna == false) {
-                       WR16(dev_addr, IQM_AF_AMUX__A, 0x02);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_AMUX__A, 0x02, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_SYMMETRIC__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, 3, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_QAM__M, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
                }
-               WR16(dev_addr, IQM_CF_SYMMETRIC__A, 0);
-               WR16(dev_addr, IQM_CF_MIDTAP__A, 3);
-               WR16(dev_addr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_QAM__M);
-
-               WR16(dev_addr, SCU_RAM_QAM_WR_RSV_0__A, 0x5f);  /* scu temporary shut down agc */
 
-               WR16(dev_addr, IQM_AF_SYNC_SEL__A, 3);
-               WR16(dev_addr, IQM_AF_CLP_LEN__A, 0);
-               WR16(dev_addr, IQM_AF_CLP_TH__A, 448);
-               WR16(dev_addr, IQM_AF_SNS_LEN__A, 0);
-               WR16(dev_addr, IQM_AF_PDREF__A, 4);
-               WR16(dev_addr, IQM_AF_STDBY__A, 0x10);
-               WR16(dev_addr, IQM_AF_PGA_GAIN__A, 11);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_WR_RSV_0__A, 0x5f, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /* scu temporary shut down agc */
 
-               WR16(dev_addr, IQM_CF_POW_MEAS_LEN__A, 1);
-               WR16(dev_addr, IQM_CF_SCALE_SH__A, IQM_CF_SCALE_SH__PRE);       /*! reset default val ! */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_SYNC_SEL__A, 3, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_CLP_LEN__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_CLP_TH__A, 448, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_SNS_LEN__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_PDREF__A, 4, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_STDBY__A, 0x10, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_PGA_GAIN__A, 11, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
-               WR16(dev_addr, QAM_SY_TIMEOUT__A, QAM_SY_TIMEOUT__PRE); /*! reset default val ! */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_POW_MEAS_LEN__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_SCALE_SH__A, IQM_CF_SCALE_SH__PRE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /*! reset default val ! */
+
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_TIMEOUT__A, QAM_SY_TIMEOUT__PRE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /*! reset default val ! */
                if (ext_attr->standard == DRX_STANDARD_ITU_B) {
-                       WR16(dev_addr, QAM_SY_SYNC_LWM__A, QAM_SY_SYNC_LWM__PRE);       /*! reset default val ! */
-                       WR16(dev_addr, QAM_SY_SYNC_AWM__A, QAM_SY_SYNC_AWM__PRE);       /*! reset default val ! */
-                       WR16(dev_addr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE);       /*! reset default val ! */
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_LWM__A, QAM_SY_SYNC_LWM__PRE, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /*! reset default val ! */
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_AWM__A, QAM_SY_SYNC_AWM__PRE, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /*! reset default val ! */
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }       /*! reset default val ! */
                } else {
                        switch (channel->constellation) {
                        case DRX_CONSTELLATION_QAM16:
                        case DRX_CONSTELLATION_QAM64:
                        case DRX_CONSTELLATION_QAM256:
-                               WR16(dev_addr, QAM_SY_SYNC_LWM__A, 0x03);
-                               WR16(dev_addr, QAM_SY_SYNC_AWM__A, 0x04);
-                               WR16(dev_addr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE);       /*! reset default val ! */
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_LWM__A, 0x03, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_AWM__A, 0x04, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }       /*! reset default val ! */
                                break;
                        case DRX_CONSTELLATION_QAM32:
                        case DRX_CONSTELLATION_QAM128:
-                               WR16(dev_addr, QAM_SY_SYNC_LWM__A, 0x03);
-                               WR16(dev_addr, QAM_SY_SYNC_AWM__A, 0x05);
-                               WR16(dev_addr, QAM_SY_SYNC_HWM__A, 0x06);
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_LWM__A, 0x03, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_AWM__A, 0x05, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SY_SYNC_HWM__A, 0x06, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                break;
                        default:
                                return (DRX_STS_ERROR);
                        }       /* switch */
                }
 
-               WR16(dev_addr, QAM_LC_MODE__A, QAM_LC_MODE__PRE);       /*! reset default val ! */
-               WR16(dev_addr, QAM_LC_RATE_LIMIT__A, 3);
-               WR16(dev_addr, QAM_LC_LPF_FACTORP__A, 4);
-               WR16(dev_addr, QAM_LC_LPF_FACTORI__A, 4);
-               WR16(dev_addr, QAM_LC_MODE__A, 7);
-               WR16(dev_addr, QAM_LC_QUAL_TAB0__A, 1);
-               WR16(dev_addr, QAM_LC_QUAL_TAB1__A, 1);
-               WR16(dev_addr, QAM_LC_QUAL_TAB2__A, 1);
-               WR16(dev_addr, QAM_LC_QUAL_TAB3__A, 1);
-               WR16(dev_addr, QAM_LC_QUAL_TAB4__A, 2);
-               WR16(dev_addr, QAM_LC_QUAL_TAB5__A, 2);
-               WR16(dev_addr, QAM_LC_QUAL_TAB6__A, 2);
-               WR16(dev_addr, QAM_LC_QUAL_TAB8__A, 2);
-               WR16(dev_addr, QAM_LC_QUAL_TAB9__A, 2);
-               WR16(dev_addr, QAM_LC_QUAL_TAB10__A, 2);
-               WR16(dev_addr, QAM_LC_QUAL_TAB12__A, 2);
-               WR16(dev_addr, QAM_LC_QUAL_TAB15__A, 3);
-               WR16(dev_addr, QAM_LC_QUAL_TAB16__A, 3);
-               WR16(dev_addr, QAM_LC_QUAL_TAB20__A, 4);
-               WR16(dev_addr, QAM_LC_QUAL_TAB25__A, 4);
-
-               WR16(dev_addr, IQM_FS_ADJ_SEL__A, 1);
-               WR16(dev_addr, IQM_RC_ADJ_SEL__A, 1);
-               WR16(dev_addr, IQM_CF_ADJ_SEL__A, 1);
-               WR16(dev_addr, IQM_CF_POW_MEAS_LEN__A, 0);
-               WR16(dev_addr, SCU_RAM_GPIO__A, 0);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_MODE__A, QAM_LC_MODE__PRE, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }       /*! reset default val ! */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_RATE_LIMIT__A, 3, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_LPF_FACTORP__A, 4, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_LPF_FACTORI__A, 4, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_MODE__A, 7, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB0__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB1__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB2__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB3__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB4__A, 2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB5__A, 2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB6__A, 2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB8__A, 2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB9__A, 2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB10__A, 2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB12__A, 2, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB15__A, 3, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB16__A, 3, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB20__A, 4, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_QUAL_TAB25__A, 4, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_ADJ_SEL__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_ADJ_SEL__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_ADJ_SEL__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_POW_MEAS_LEN__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_GPIO__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* No more resets of the IQM, current standard correctly set =>
                   now AGCs can be configured. */
                /* turn on IQMAF. It has to be in front of setAgc**() */
-               CHK_ERROR(set_iqm_af(demod, true));
-               CHK_ERROR(adc_synchronization(demod));
+               rc = set_iqm_af(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = adc_synchronization(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
-               CHK_ERROR(init_agc(demod));
-               CHK_ERROR(set_agc_if(demod, &(ext_attr->qam_if_agc_cfg), false));
-               CHK_ERROR(set_agc_rf(demod, &(ext_attr->qam_rf_agc_cfg), false));
+               rc = init_agc(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_agc_if(demod, &(ext_attr->qam_if_agc_cfg), false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_agc_rf(demod, &(ext_attr->qam_rf_agc_cfg), false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                {
                        /* TODO fix this, store a struct drxj_cfg_afe_gain structure in struct drxj_data instead
                           of only the gain */
                        struct drxj_cfg_afe_gain qam_pga_cfg = { DRX_STANDARD_ITU_B, 0 };
 
                        qam_pga_cfg.gain = ext_attr->qam_pga_cfg;
-                       CHK_ERROR(ctrl_set_cfg_afe_gain(demod, &qam_pga_cfg));
+                       rc = ctrl_set_cfg_afe_gain(demod, &qam_pga_cfg);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }
+               rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->qam_pre_saw_cfg));
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
                }
-               CHK_ERROR(ctrl_set_cfg_pre_saw(demod, &(ext_attr->qam_pre_saw_cfg)));
        }
 
        if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) {
                if (ext_attr->standard == DRX_STANDARD_ITU_A) {
-                       WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(qam_a_taps),
-                           ((u8 *)qam_a_taps));
-                       WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(qam_a_taps),
-                           ((u8 *)qam_a_taps));
+                       rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(qam_a_taps), ((u8 *)qam_a_taps), 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(qam_a_taps), ((u8 *)qam_a_taps), 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                } else if (ext_attr->standard == DRX_STANDARD_ITU_B) {
                        switch (channel->constellation) {
                        case DRX_CONSTELLATION_QAM64:
-                               WRB(dev_addr, IQM_CF_TAP_RE0__A,
-                                   sizeof(qam_b64_taps), ((u8 *)qam_b64_taps));
-                               WRB(dev_addr, IQM_CF_TAP_IM0__A,
-                                   sizeof(qam_b64_taps), ((u8 *)qam_b64_taps));
+                               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(qam_b64_taps), ((u8 *)qam_b64_taps), 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(qam_b64_taps), ((u8 *)qam_b64_taps), 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                break;
                        case DRX_CONSTELLATION_QAM256:
-                               WRB(dev_addr, IQM_CF_TAP_RE0__A,
-                                   sizeof(qam_b256_taps),
-                                   ((u8 *)qam_b256_taps));
-                               WRB(dev_addr, IQM_CF_TAP_IM0__A,
-                                   sizeof(qam_b256_taps),
-                                   ((u8 *)qam_b256_taps));
+                               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(qam_b256_taps), ((u8 *)qam_b256_taps), 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(qam_b256_taps), ((u8 *)qam_b256_taps), 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                break;
                        default:
                                return (DRX_STS_ERROR);
                        }
                } else if (ext_attr->standard == DRX_STANDARD_ITU_C) {
-                       WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(qam_c_taps),
-                           ((u8 *)qam_c_taps));
-                       WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(qam_c_taps),
-                           ((u8 *)qam_c_taps));
+                       rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(qam_c_taps), ((u8 *)qam_c_taps), 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(qam_c_taps), ((u8 *)qam_c_taps), 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
 
                /* SETP 4: constellation specific setup */
                switch (channel->constellation) {
                case DRX_CONSTELLATION_QAM16:
-                       CHK_ERROR(set_qam16(demod));
+                       rc = set_qam16(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_CONSTELLATION_QAM32:
-                       CHK_ERROR(set_qam32(demod));
+                       rc = set_qam32(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_CONSTELLATION_QAM64:
-                       CHK_ERROR(set_qam64(demod));
+                       rc = set_qam64(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_CONSTELLATION_QAM128:
-                       CHK_ERROR(set_qam128(demod));
+                       rc = set_qam128(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_CONSTELLATION_QAM256:
-                       CHK_ERROR(set_qam256(demod));
+                       rc = set_qam256(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                default:
                        return (DRX_STS_ERROR);
@@ -7317,12 +10107,28 @@ set_qam(struct drx_demod_instance *demod,
        }
 
        if ((op & QAM_SET_OP_ALL)) {
-               WR16(dev_addr, IQM_CF_SCALE_SH__A, 0);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_SCALE_SH__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* Mpeg output has to be in front of FEC active */
-               CHK_ERROR(set_mpegtei_handling(demod));
-               CHK_ERROR(bit_reverse_mpeg_output(demod));
-               CHK_ERROR(set_mpeg_start_width(demod));
+               rc = set_mpegtei_handling(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = bit_reverse_mpeg_output(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_mpeg_start_width(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                {
                        /* TODO: move to set_standard after hardware reset value problem is solved */
                        /* Configure initial MPEG output */
@@ -7341,7 +10147,11 @@ set_qam(struct drx_demod_instance *demod,
                        cfg_mpeg_output.invert_clk = common_attr->mpeg_cfg.invert_clk;
                        cfg_mpeg_output.static_clk = common_attr->mpeg_cfg.static_clk;
                        cfg_mpeg_output.bitrate = common_attr->mpeg_cfg.bitrate;
-                       CHK_ERROR(ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output));
+                       rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
        }
 
@@ -7354,12 +10164,28 @@ set_qam(struct drx_demod_instance *demod,
                cmd_scu.result_len = 1;
                cmd_scu.parameter = NULL;
                cmd_scu.result = &cmd_result;
-               CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+               rc = scu_command(dev_addr, &cmd_scu);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
-       WR16(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE);
-       WR16(dev_addr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_ACTIVE);
-       WR16(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -7371,6 +10197,7 @@ static int
 ctrl_get_qam_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_quality);
 static int qam_flip_spec(struct drx_demod_instance *demod, struct drx_channel *channel)
 {
+       int rc;
        u32 iqm_fs_rate_ofs = 0;
        u32 iqm_fs_rate_lo = 0;
        u16 qam_ctl_ena = 0;
@@ -7386,65 +10213,163 @@ static int qam_flip_spec(struct drx_demod_instance *demod, struct drx_channel *c
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /* Silence the controlling of lc, equ, and the acquisition state machine */
-       RR16(dev_addr, SCU_RAM_QAM_CTL_ENA__A, &qam_ctl_ena);
-       WR16(dev_addr, SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena
-            & ~(SCU_RAM_QAM_CTL_ENA_ACQ__M
-                | SCU_RAM_QAM_CTL_ENA_EQU__M | SCU_RAM_QAM_CTL_ENA_LC__M));
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_QAM_CTL_ENA__A, &qam_ctl_ena, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena & ~(SCU_RAM_QAM_CTL_ENA_ACQ__M | SCU_RAM_QAM_CTL_ENA_EQU__M | SCU_RAM_QAM_CTL_ENA_LC__M), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* freeze the frequency control loop */
-       WR16(dev_addr, QAM_LC_CF__A, 0);
-       WR16(dev_addr, QAM_LC_CF1__A, 0);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_CF__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_CF1__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       ARR32(dev_addr, IQM_FS_RATE_OFS_LO__A, &iqm_fs_rate_ofs);
-       ARR32(dev_addr, IQM_FS_RATE_LO__A, &iqm_fs_rate_lo);
+       rc = drxj_dap_atomic_read_reg32(dev_addr, IQM_FS_RATE_OFS_LO__A, &iqm_fs_rate_ofs, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = drxj_dap_atomic_read_reg32(dev_addr, IQM_FS_RATE_LO__A, &iqm_fs_rate_lo, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ofsofs = iqm_fs_rate_lo - iqm_fs_rate_ofs;
        iqm_fs_rate_ofs = ~iqm_fs_rate_ofs + 1;
        iqm_fs_rate_ofs -= 2 * ofsofs;
 
        /* freeze dq/fq updating */
-       RR16(dev_addr, QAM_DQ_MODE__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, QAM_DQ_MODE__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        data = (data & 0xfff9);
-       WR16(dev_addr, QAM_DQ_MODE__A, data);
-       WR16(dev_addr, QAM_FQ_MODE__A, data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_DQ_MODE__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_FQ_MODE__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* lc_cp / _ci / _ca */
-       WR16(dev_addr, QAM_LC_CI__A, 0);
-       WR16(dev_addr, QAM_LC_EP__A, 0);
-       WR16(dev_addr, QAM_FQ_LA_FACTOR__A, 0);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_CI__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_LC_EP__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_FQ_LA_FACTOR__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* flip the spec */
-       WR32(dev_addr, IQM_FS_RATE_OFS_LO__A, iqm_fs_rate_ofs);
+       rc = DRXJ_DAP.write_reg32func(dev_addr, IQM_FS_RATE_OFS_LO__A, iqm_fs_rate_ofs, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->iqm_fs_rate_ofs = iqm_fs_rate_ofs;
        ext_attr->pos_image = (ext_attr->pos_image) ? false : true;
 
        /* freeze dq/fq updating */
-       RR16(dev_addr, QAM_DQ_MODE__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, QAM_DQ_MODE__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        equ_mode = data;
        data = (data & 0xfff9);
-       WR16(dev_addr, QAM_DQ_MODE__A, data);
-       WR16(dev_addr, QAM_FQ_MODE__A, data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_DQ_MODE__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_FQ_MODE__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        for (i = 0; i < 28; i++) {
-               RR16(dev_addr, QAM_DQ_TAP_IM_EL0__A + (2 * i), &data);
-               WR16(dev_addr, QAM_DQ_TAP_IM_EL0__A + (2 * i), -data);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, QAM_DQ_TAP_IM_EL0__A + (2 * i), &data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_DQ_TAP_IM_EL0__A + (2 * i), -data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        for (i = 0; i < 24; i++) {
-               RR16(dev_addr, QAM_FQ_TAP_IM_EL0__A + (2 * i), &data);
-               WR16(dev_addr, QAM_FQ_TAP_IM_EL0__A + (2 * i), -data);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, QAM_FQ_TAP_IM_EL0__A + (2 * i), &data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_FQ_TAP_IM_EL0__A + (2 * i), -data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        data = equ_mode;
-       WR16(dev_addr, QAM_DQ_MODE__A, data);
-       WR16(dev_addr, QAM_FQ_MODE__A, data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_DQ_MODE__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_FQ_MODE__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, SCU_RAM_QAM_FSM_STATE_TGT__A, 4);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_FSM_STATE_TGT__A, 4, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        i = 0;
        while ((fsm_state != 4) && (i++ < 100)) {
-               RR16(dev_addr, SCU_RAM_QAM_FSM_STATE__A, &fsm_state);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, SCU_RAM_QAM_FSM_STATE__A, &fsm_state, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_QAM_CTL_ENA__A, (qam_ctl_ena | 0x0016), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
        }
-       WR16(dev_addr, SCU_RAM_QAM_CTL_ENA__A, (qam_ctl_ena | 0x0016));
 
        return (DRX_STS_OK);
 rw_error:
@@ -7471,12 +10396,13 @@ qam64auto(struct drx_demod_instance *demod,
          s32 tuner_freq_offset, enum drx_lock_status *lock_status)
 {
        struct drx_sig_quality sig_quality;
-       u16 data = 0;
+       struct drxj_data *ext_attr = NULL;
+       int rc;
        u32 state = NO_LOCK;
        u32 start_time = 0;
        u32 d_locked_time = 0;
-       struct drxj_data *ext_attr = NULL;
        u32 timeout_ofs = 0;
+       u16 data = 0;
 
        /* external attributes for storing aquired channel constellation */
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -7484,13 +10410,20 @@ qam64auto(struct drx_demod_instance *demod,
        start_time = drxbsp_hst_clock();
        state = NO_LOCK;
        do {
-               CHK_ERROR(ctrl_lock_status(demod, lock_status));
+               rc = ctrl_lock_status(demod, lock_status);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                switch (state) {
                case NO_LOCK:
                        if (*lock_status == DRXJ_DEMOD_LOCK) {
-                               CHK_ERROR(ctrl_get_qam_sig_quality
-                                         (demod, &sig_quality));
+                               rc = ctrl_get_qam_sig_quality(demod, &sig_quality);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                if (sig_quality.MER > 208) {
                                        state = DEMOD_LOCKED;
                                        /* some delay to see if fec_lock possible TODO find the right value */
@@ -7503,10 +10436,16 @@ qam64auto(struct drx_demod_instance *demod,
                        if ((*lock_status == DRXJ_DEMOD_LOCK) &&        /* still demod_lock in 150ms */
                            ((drxbsp_hst_clock() - d_locked_time) >
                             DRXJ_QAM_FEC_LOCK_WAITTIME)) {
-                               RR16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A,
-                                    &data);
-                               WR16(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A,
-                                    data | 0x1);
+                               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data | 0x1, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                state = SYNC_FLIPPED;
                                drxbsp_hst_sleep(10);
                        }
@@ -7515,13 +10454,23 @@ qam64auto(struct drx_demod_instance *demod,
                        if (*lock_status == DRXJ_DEMOD_LOCK) {
                                if (channel->mirror == DRX_MIRROR_AUTO) {
                                        /* flip sync pattern back */
-                                       RR16(demod->my_i2c_dev_addr,
-                                            QAM_SY_TIMEOUT__A, &data);
-                                       WR16(demod->my_i2c_dev_addr,
-                                            QAM_SY_TIMEOUT__A, data & 0xFFFE);
+                                       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
+                                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data & 0xFFFE, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
                                        /* flip spectrum */
                                        ext_attr->mirror = DRX_MIRROR_YES;
-                                       CHK_ERROR(qam_flip_spec(demod, channel));
+                                       rc = qam_flip_spec(demod, channel);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
                                        state = SPEC_MIRRORED;
                                        /* reset timer TODO: still need 500ms? */
                                        start_time = d_locked_time =
@@ -7539,13 +10488,22 @@ qam64auto(struct drx_demod_instance *demod,
                        if ((*lock_status == DRXJ_DEMOD_LOCK) &&        /* still demod_lock in 150ms */
                            ((drxbsp_hst_clock() - d_locked_time) >
                             DRXJ_QAM_FEC_LOCK_WAITTIME)) {
-                               CHK_ERROR(ctrl_get_qam_sig_quality
-                                         (demod, &sig_quality));
+                               rc = ctrl_get_qam_sig_quality(demod, &sig_quality);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                if (sig_quality.MER > 208) {
-                                       RR16(demod->my_i2c_dev_addr,
-                                            QAM_SY_TIMEOUT__A, &data);
-                                       WR16(demod->my_i2c_dev_addr,
-                                            QAM_SY_TIMEOUT__A, data | 0x1);
+                                       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, &data, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
+                                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, QAM_SY_TIMEOUT__A, data | 0x1, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
                                        /* no need to wait lock */
                                        start_time =
                                            drxbsp_hst_clock() -
@@ -7585,10 +10543,11 @@ qam256auto(struct drx_demod_instance *demod,
           s32 tuner_freq_offset, enum drx_lock_status *lock_status)
 {
        struct drx_sig_quality sig_quality;
+       struct drxj_data *ext_attr = NULL;
+       int rc;
        u32 state = NO_LOCK;
        u32 start_time = 0;
        u32 d_locked_time = 0;
-       struct drxj_data *ext_attr = NULL;
        u32 timeout_ofs = DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME;
 
        /* external attributes for storing aquired channel constellation */
@@ -7597,12 +10556,19 @@ qam256auto(struct drx_demod_instance *demod,
        start_time = drxbsp_hst_clock();
        state = NO_LOCK;
        do {
-               CHK_ERROR(ctrl_lock_status(demod, lock_status));
+               rc = ctrl_lock_status(demod, lock_status);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                switch (state) {
                case NO_LOCK:
                        if (*lock_status == DRXJ_DEMOD_LOCK) {
-                               CHK_ERROR(ctrl_get_qam_sig_quality
-                                         (demod, &sig_quality));
+                               rc = ctrl_get_qam_sig_quality(demod, &sig_quality);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                if (sig_quality.MER > 268) {
                                        state = DEMOD_LOCKED;
                                        timeout_ofs += DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME;        /* see something, wait longer */
@@ -7616,7 +10582,11 @@ qam256auto(struct drx_demod_instance *demod,
                                    ((drxbsp_hst_clock() - d_locked_time) >
                                     DRXJ_QAM_FEC_LOCK_WAITTIME)) {
                                        ext_attr->mirror = DRX_MIRROR_YES;
-                                       CHK_ERROR(qam_flip_spec(demod, channel));
+                                       rc = qam_flip_spec(demod, channel);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
                                        state = SPEC_MIRRORED;
                                        /* reset timer TODO: still need 300ms? */
                                        start_time = drxbsp_hst_clock();
@@ -7652,8 +10622,9 @@ static int
 set_qamChannel(struct drx_demod_instance *demod,
               struct drx_channel *channel, s32 tuner_freq_offset)
 {
-       enum drx_lock_status lock_status = DRX_NOT_LOCKED;
        struct drxj_data *ext_attr = NULL;
+       int rc;
+       enum drx_lock_status lock_status = DRX_NOT_LOCKED;
        bool auto_flag = false;
 
        /* external attributes for storing aquired channel constellation */
@@ -7672,22 +10643,29 @@ set_qamChannel(struct drx_demod_instance *demod,
                } else {
                        ext_attr->mirror = channel->mirror;
                }
-               CHK_ERROR(set_qam
-                         (demod, channel, tuner_freq_offset, QAM_SET_OP_ALL));
+               rc = set_qam(demod, channel, tuner_freq_offset, QAM_SET_OP_ALL);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                if ((ext_attr->standard == DRX_STANDARD_ITU_B) &&
                    (channel->constellation == DRX_CONSTELLATION_QAM64)) {
-                       CHK_ERROR(qam64auto
-                                 (demod, channel, tuner_freq_offset,
-                                  &lock_status));
+                       rc = qam64auto(demod, channel, tuner_freq_offset, &lock_status);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
 
                if ((ext_attr->standard == DRX_STANDARD_ITU_B) &&
                    (channel->mirror == DRX_MIRROR_AUTO) &&
                    (channel->constellation == DRX_CONSTELLATION_QAM256)) {
-                       CHK_ERROR(qam256auto
-                                 (demod, channel, tuner_freq_offset,
-                                  &lock_status));
+                       rc = qam256auto(demod, channel, tuner_freq_offset, &lock_status);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
                break;
        case DRX_CONSTELLATION_AUTO:    /* for channel scan */
@@ -7701,12 +10679,16 @@ set_qamChannel(struct drx_demod_instance *demod,
                        } else {
                                ext_attr->mirror = channel->mirror;
                        }
-                       CHK_ERROR(set_qam
-                                 (demod, channel, tuner_freq_offset,
-                                  QAM_SET_OP_ALL));
-                       CHK_ERROR(qam256auto
-                                 (demod, channel, tuner_freq_offset,
-                                  &lock_status));
+                       rc = set_qam(demod, channel, tuner_freq_offset, QAM_SET_OP_ALL);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = qam256auto(demod, channel, tuner_freq_offset, &lock_status);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        if (lock_status < DRX_LOCKED) {
                                /* QAM254 not locked -> try to lock QAM64 constellation */
@@ -7721,25 +10703,38 @@ set_qamChannel(struct drx_demod_instance *demod,
                                }
                                {
                                        u16 qam_ctl_ena = 0;
-                                       RR16(demod->my_i2c_dev_addr,
-                                            SCU_RAM_QAM_CTL_ENA__A,
-                                            &qam_ctl_ena);
-                                       WR16(demod->my_i2c_dev_addr,
-                                            SCU_RAM_QAM_CTL_ENA__A,
-                                            qam_ctl_ena &
-                                            ~SCU_RAM_QAM_CTL_ENA_ACQ__M);
-                                       WR16(demod->my_i2c_dev_addr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2);        /* force to rate hunting */
-
-                                       CHK_ERROR(set_qam
-                                                 (demod, channel,
-                                                  tuner_freq_offset,
-                                                  QAM_SET_OP_CONSTELLATION));
-                                       WR16(demod->my_i2c_dev_addr,
-                                            SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena);
+                                       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_CTL_ENA__A, &qam_ctl_ena, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
+                                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena & ~SCU_RAM_QAM_CTL_ENA_ACQ__M, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
+                                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }       /* force to rate hunting */
+
+                                       rc = set_qam(demod, channel, tuner_freq_offset, QAM_SET_OP_CONSTELLATION);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
+                                       rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena, 0);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
+                               }
+                               rc = qam64auto(demod, channel, tuner_freq_offset, &lock_status);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
                                }
-                               CHK_ERROR(qam64auto
-                                         (demod, channel, tuner_freq_offset,
-                                          &lock_status));
                        }
                        channel->constellation = DRX_CONSTELLATION_AUTO;
                } else if (ext_attr->standard == DRX_STANDARD_ITU_C) {
@@ -7754,22 +10749,38 @@ set_qamChannel(struct drx_demod_instance *demod,
                        }
                        {
                                u16 qam_ctl_ena = 0;
-                               RR16(demod->my_i2c_dev_addr,
-                                    SCU_RAM_QAM_CTL_ENA__A, &qam_ctl_ena);
-                               WR16(demod->my_i2c_dev_addr,
-                                    SCU_RAM_QAM_CTL_ENA__A,
-                                    qam_ctl_ena & ~SCU_RAM_QAM_CTL_ENA_ACQ__M);
-                               WR16(demod->my_i2c_dev_addr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2);        /* force to rate hunting */
-
-                               CHK_ERROR(set_qam
-                                         (demod, channel, tuner_freq_offset,
-                                          QAM_SET_OP_CONSTELLATION));
-                               WR16(demod->my_i2c_dev_addr,
-                                    SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena);
-                       }
-                       CHK_ERROR(qam64auto
-                                 (demod, channel, tuner_freq_offset,
-                                  &lock_status));
+                               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_CTL_ENA__A, &qam_ctl_ena, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena & ~SCU_RAM_QAM_CTL_ENA_ACQ__M, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }       /* force to rate hunting */
+
+                               rc = set_qam(demod, channel, tuner_freq_offset, QAM_SET_OP_CONSTELLATION);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                               rc = DRXJ_DAP.write_reg16func(demod->my_i2c_dev_addr, SCU_RAM_QAM_CTL_ENA__A, qam_ctl_ena, 0);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
+                       }
+                       rc = qam64auto(demod, channel, tuner_freq_offset, &lock_status);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        channel->constellation = DRX_CONSTELLATION_AUTO;
                } else {
                        channel->constellation = DRX_CONSTELLATION_AUTO;
@@ -7801,6 +10812,7 @@ rw_error:
 static int
 GetQAMRSErr_count(struct i2c_device_addr *dev_addr, struct drxjrs_errors *rs_errors)
 {
+       int rc;
        u16 nr_bit_errors = 0,
            nr_symbol_errors = 0,
            nr_packet_errors = 0, nr_failures = 0, nr_snc_par_fail_count = 0;
@@ -7813,15 +10825,35 @@ GetQAMRSErr_count(struct i2c_device_addr *dev_addr, struct drxjrs_errors *rs_err
        /* all reported errors are received in the  */
        /* most recently finished measurment period */
        /*   no of pre RS bit errors */
-       RR16(dev_addr, FEC_RS_NR_BIT_ERRORS__A, &nr_bit_errors);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_RS_NR_BIT_ERRORS__A, &nr_bit_errors, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /*   no of symbol errors      */
-       RR16(dev_addr, FEC_RS_NR_SYMBOL_ERRORS__A, &nr_symbol_errors);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_RS_NR_SYMBOL_ERRORS__A, &nr_symbol_errors, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /*   no of packet errors      */
-       RR16(dev_addr, FEC_RS_NR_PACKET_ERRORS__A, &nr_packet_errors);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_RS_NR_PACKET_ERRORS__A, &nr_packet_errors, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /*   no of failures to decode */
-       RR16(dev_addr, FEC_RS_NR_FAILURES__A, &nr_failures);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_RS_NR_FAILURES__A, &nr_failures, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /*   no of post RS bit erros  */
-       RR16(dev_addr, FEC_OC_SNC_FAIL_COUNT__A, &nr_snc_par_fail_count);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_SNC_FAIL_COUNT__A, &nr_snc_par_fail_count, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* TODO: NOTE */
        /* These register values are fetched in non-atomic fashion           */
        /* It is possible that the read values contain unrelated information */
@@ -7857,6 +10889,7 @@ ctrl_get_qam_sig_quality(struct drx_demod_instance *demod, struct drx_sig_qualit
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
        enum drx_modulation constellation = DRX_CONSTELLATION_UNKNOWN;
        struct drxjrs_errors measuredrs_errors = { 0, 0, 0, 0, 0 };
 
@@ -7891,11 +10924,23 @@ ctrl_get_qam_sig_quality(struct drx_demod_instance *demod, struct drx_sig_qualit
 
        /* read the physical registers */
        /*   Get the RS error data */
-       CHK_ERROR(GetQAMRSErr_count(dev_addr, &measuredrs_errors));
+       rc = GetQAMRSErr_count(dev_addr, &measuredrs_errors);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* get the register value needed for MER */
-       RR16(dev_addr, QAM_SL_ERR_POWER__A, &qam_sl_err_power);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, QAM_SL_ERR_POWER__A, &qam_sl_err_power, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* get the register value needed for post RS BER */
-       RR16(dev_addr, FEC_OC_SNC_FAIL_PERIOD__A, &fec_oc_period);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, FEC_OC_SNC_FAIL_PERIOD__A, &fec_oc_period, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* get constants needed for signal quality calculation */
        fec_rs_period = ext_attr->fec_rs_period;
@@ -7946,7 +10991,11 @@ ctrl_get_qam_sig_quality(struct drx_demod_instance *demod, struct drx_sig_qualit
 
        /* get the register value */
        /*   no of quadrature symbol errors */
-       RR16(dev_addr, QAM_VD_NR_QSYM_ERRORS__A, &qsym_err_vd);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, QAM_VD_NR_QSYM_ERRORS__A, &qsym_err_vd, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* Extract the Exponent and the Mantisa  */
        /* of number of quadrature symbol errors */
        e = (qsym_err_vd & QAM_VD_NR_QSYM_ERRORS_EXP__M) >>
@@ -8016,7 +11065,11 @@ ctrl_get_qam_sig_quality(struct drx_demod_instance *demod, struct drx_sig_qualit
        sig_quality->post_reed_solomon_ber = qam_post_rs_ber;
        sig_quality->scale_factor_ber = ((u32) 1000000);
 #ifdef DRXJ_SIGNAL_ACCUM_ERR
-       CHK_ERROR(get_acc_pkt_err(demod, &sig_quality->packet_error));
+       rc = get_acc_pkt_err(demod, &sig_quality->packet_error);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 #else
        sig_quality->packet_error = ((u16) pkt_errs);
 #endif
@@ -8037,6 +11090,9 @@ rw_error:
 static int
 ctrl_get_qam_constel(struct drx_demod_instance *demod, struct drx_complex *complex_nr)
 {
+       struct i2c_device_addr *dev_addr = NULL;
+       int rc;
+       u32 data = 0;
        u16 fec_oc_ocr_mode = 0;
                              /**< FEC OCR grabber configuration        */
        u16 qam_sl_comm_mb = 0;/**< QAM SL MB configuration              */
@@ -8044,8 +11100,6 @@ ctrl_get_qam_constel(struct drx_demod_instance *demod, struct drx_complex *compl
                              /**< QAM SL MB intial configuration       */
        u16 im = 0;           /**< constellation Im part                */
        u16 re = 0;           /**< constellation Re part                */
-       u32 data = 0;
-       struct i2c_device_addr *dev_addr = NULL;
                                     /**< device address */
 
        /* read device info */
@@ -8056,13 +11110,21 @@ ctrl_get_qam_constel(struct drx_demod_instance *demod, struct drx_complex *compl
        /* Needs to be checked when external interface PG is updated */
 
        /* Configure MB (Monitor bus) */
-       RR16(dev_addr, QAM_SL_COMM_MB__A, &qam_sl_comm_mbInit);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, QAM_SL_COMM_MB__A, &qam_sl_comm_mbInit, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* set observe flag & MB mux */
        qam_sl_comm_mb = qam_sl_comm_mbInit & (~(QAM_SL_COMM_MB_OBS__M +
                                           QAM_SL_COMM_MB_MUX_OBS__M));
        qam_sl_comm_mb |= (QAM_SL_COMM_MB_OBS_ON +
                        QAM_SL_COMM_MB_MUX_OBS_CONST_CORR);
-       WR16(dev_addr, QAM_SL_COMM_MB__A, qam_sl_comm_mb);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SL_COMM_MB__A, qam_sl_comm_mb, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Enable MB grabber in the FEC OC */
        fec_oc_ocr_mode = (/* output select:  observe bus */
@@ -8077,13 +11139,25 @@ ctrl_get_qam_constel(struct drx_demod_instance *demod, struct drx_complex *compl
                               /* grabber mode:   continuous  */
                               (FEC_OC_OCR_MODE_GRAB_COUNTED__M &
                                (0x0 << FEC_OC_OCR_MODE_GRAB_COUNTED__B)));
-       WR16(dev_addr, FEC_OC_OCR_MODE__A, fec_oc_ocr_mode);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_OCR_MODE__A, fec_oc_ocr_mode, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Disable MB grabber in the FEC OC */
-       WR16(dev_addr, FEC_OC_OCR_MODE__A, 0x00);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, FEC_OC_OCR_MODE__A, 0x00, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* read data */
-       RR32(dev_addr, FEC_OC_OCR_GRAB_RD0__A, &data);
+       rc = DRXJ_DAP.read_reg32func(dev_addr, FEC_OC_OCR_GRAB_RD0__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        re = (u16) (data & FEC_OC_OCR_GRAB_RD0__M);
        im = (u16) ((data >> 16) & FEC_OC_OCR_GRAB_RD1__M);
 
@@ -8101,7 +11175,11 @@ ctrl_get_qam_constel(struct drx_demod_instance *demod, struct drx_complex *compl
        complex_nr->im = ((s16) im);
 
        /* Restore MB (Monitor bus) */
-       WR16(dev_addr, QAM_SL_COMM_MB__A, qam_sl_comm_mbInit);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, QAM_SL_COMM_MB__A, qam_sl_comm_mbInit, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -8229,6 +11307,7 @@ atv_update_config(struct drx_demod_instance *demod, bool force_update)
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -8238,37 +11317,73 @@ atv_update_config(struct drx_demod_instance *demod, bool force_update)
            ((ext_attr->atv_cfg_changed_flags & DRXJ_ATV_CHANGED_COEF) != 0)) {
                int index = 0;
 
-               CHK_ERROR(atv_equ_coef_index(ext_attr->standard, &index));
-               WR16(dev_addr, ATV_TOP_EQU0__A, ext_attr->atv_top_equ0[index]);
-               WR16(dev_addr, ATV_TOP_EQU1__A, ext_attr->atv_top_equ1[index]);
-               WR16(dev_addr, ATV_TOP_EQU2__A, ext_attr->atv_top_equ2[index]);
-               WR16(dev_addr, ATV_TOP_EQU3__A, ext_attr->atv_top_equ3[index]);
+               rc = atv_equ_coef_index(ext_attr->standard, &index);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_EQU0__A, ext_attr->atv_top_equ0[index], 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_EQU1__A, ext_attr->atv_top_equ1[index], 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_EQU2__A, ext_attr->atv_top_equ2[index], 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_EQU3__A, ext_attr->atv_top_equ3[index], 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* bypass fast carrier recovery */
        if (force_update) {
                u16 data = 0;
 
-               RR16(dev_addr, IQM_RT_ROT_BP__A, &data);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_RT_ROT_BP__A, &data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                data &= (~((u16) IQM_RT_ROT_BP_ROT_OFF__M));
                if (ext_attr->phase_correction_bypass) {
                        data |= IQM_RT_ROT_BP_ROT_OFF_OFF;
                } else {
                        data |= IQM_RT_ROT_BP_ROT_OFF_ACTIVE;
                }
-               WR16(dev_addr, IQM_RT_ROT_BP__A, data);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_ROT_BP__A, data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* peak filter setting */
        if (force_update ||
            ((ext_attr->atv_cfg_changed_flags & DRXJ_ATV_CHANGED_PEAK_FLT) != 0)) {
-               WR16(dev_addr, ATV_TOP_VID_PEAK__A, ext_attr->atv_top_vid_peak);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_VID_PEAK__A, ext_attr->atv_top_vid_peak, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* noise filter setting */
        if (force_update ||
            ((ext_attr->atv_cfg_changed_flags & DRXJ_ATV_CHANGED_NOISE_FLT) != 0)) {
-               WR16(dev_addr, ATV_TOP_NOISE_TH__A, ext_attr->atv_top_noise_th);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_NOISE_TH__A, ext_attr->atv_top_noise_th, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* SIF attenuation */
@@ -8293,7 +11408,11 @@ atv_update_config(struct drx_demod_instance *demod, bool force_update)
                        return DRX_STS_ERROR;
                        break;
                }
-               WR16(dev_addr, ATV_TOP_AF_SIF_ATT__A, attenuation);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_AF_SIF_ATT__A, attenuation, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* SIF & CVBS enable */
@@ -8301,7 +11420,11 @@ atv_update_config(struct drx_demod_instance *demod, bool force_update)
            ((ext_attr->atv_cfg_changed_flags & DRXJ_ATV_CHANGED_OUTPUT) != 0)) {
                u16 data = 0;
 
-               RR16(dev_addr, ATV_TOP_STDBY__A, &data);
+               rc = DRXJ_DAP.read_reg16func(dev_addr, ATV_TOP_STDBY__A, &data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (ext_attr->enable_cvbs_output) {
                        data |= ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE;
                } else {
@@ -8313,7 +11436,11 @@ atv_update_config(struct drx_demod_instance *demod, bool force_update)
                } else {
                        data |= ATV_TOP_STDBY_SIF_STDBY_STANDBY;
                }
-               WR16(dev_addr, ATV_TOP_STDBY__A, data);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STDBY__A, data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        ext_attr->atv_cfg_changed_flags = 0;
@@ -8336,6 +11463,7 @@ static int
 ctrl_set_cfg_atv_output(struct drx_demod_instance *demod, struct drxj_cfg_atv_output *output_cfg)
 {
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        /* Check arguments */
        if (output_cfg == NULL) {
@@ -8372,7 +11500,11 @@ ctrl_set_cfg_atv_output(struct drx_demod_instance *demod, struct drxj_cfg_atv_ou
                ext_attr->atv_cfg_changed_flags |= DRXJ_ATV_CHANGED_OUTPUT;
        }
 
-       CHK_ERROR(atv_update_config(demod, false));
+       rc = atv_update_config(demod, false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -8393,6 +11525,7 @@ static int
 ctrl_set_cfg_atv_equ_coef(struct drx_demod_instance *demod, struct drxj_cfg_atv_equ_coef *coef)
 {
        struct drxj_data *ext_attr = NULL;
+       int rc;
        int index;
 
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -8415,14 +11548,22 @@ ctrl_set_cfg_atv_equ_coef(struct drx_demod_instance *demod, struct drxj_cfg_atv_
                return (DRX_STS_INVALID_ARG);
        }
 
-       CHK_ERROR(atv_equ_coef_index(ext_attr->standard, &index));
+       rc = atv_equ_coef_index(ext_attr->standard, &index);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->atv_top_equ0[index] = coef->coef0;
        ext_attr->atv_top_equ1[index] = coef->coef1;
        ext_attr->atv_top_equ2[index] = coef->coef2;
        ext_attr->atv_top_equ3[index] = coef->coef3;
        ext_attr->atv_cfg_changed_flags |= DRXJ_ATV_CHANGED_COEF;
 
-       CHK_ERROR(atv_update_config(demod, false));
+       rc = atv_update_config(demod, false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -8447,6 +11588,7 @@ static int
 ctrl_get_cfg_atv_equ_coef(struct drx_demod_instance *demod, struct drxj_cfg_atv_equ_coef *coef)
 {
        struct drxj_data *ext_attr = NULL;
+       int rc;
        int index = 0;
 
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -8461,7 +11603,11 @@ ctrl_get_cfg_atv_equ_coef(struct drx_demod_instance *demod, struct drxj_cfg_atv_
                return DRX_STS_INVALID_ARG;
        }
 
-       CHK_ERROR(atv_equ_coef_index(ext_attr->standard, &index));
+       rc = atv_equ_coef_index(ext_attr->standard, &index);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        coef->coef0 = ext_attr->atv_top_equ0[index];
        coef->coef1 = ext_attr->atv_top_equ1[index];
        coef->coef2 = ext_attr->atv_top_equ2[index];
@@ -8485,6 +11631,7 @@ static int
 ctrl_set_cfg_atv_misc(struct drx_demod_instance *demod, struct drxj_cfg_atv_misc *settings)
 {
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        /* Check arguments */
        if ((settings == NULL) ||
@@ -8506,7 +11653,11 @@ ctrl_set_cfg_atv_misc(struct drx_demod_instance *demod, struct drxj_cfg_atv_misc
                ext_attr->atv_cfg_changed_flags |= DRXJ_ATV_CHANGED_NOISE_FLT;
        }
 
-       CHK_ERROR(atv_update_config(demod, false));
+       rc = atv_update_config(demod, false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -8532,9 +11683,8 @@ ctrl_get_cfg_atv_misc(struct drx_demod_instance *demod, struct drxj_cfg_atv_misc
        struct drxj_data *ext_attr = NULL;
 
        /* Check arguments */
-       if (settings == NULL) {
+       if (settings == NULL)
                return DRX_STS_INVALID_ARG;
-       }
 
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
@@ -8558,6 +11708,7 @@ ctrl_get_cfg_atv_misc(struct drx_demod_instance *demod, struct drxj_cfg_atv_misc
 static int
 ctrl_get_cfg_atv_output(struct drx_demod_instance *demod, struct drxj_cfg_atv_output *output_cfg)
 {
+       int rc;
        u16 data = 0;
 
        /* Check arguments */
@@ -8565,7 +11716,11 @@ ctrl_get_cfg_atv_output(struct drx_demod_instance *demod, struct drxj_cfg_atv_ou
                return DRX_STS_INVALID_ARG;
        }
 
-       RR16(demod->my_i2c_dev_addr, ATV_TOP_STDBY__A, &data);
+       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, ATV_TOP_STDBY__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (data & ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE) {
                output_cfg->enable_cvbs_output = true;
        } else {
@@ -8576,7 +11731,11 @@ ctrl_get_cfg_atv_output(struct drx_demod_instance *demod, struct drxj_cfg_atv_ou
                output_cfg->enable_sif_output = false;
        } else {
                output_cfg->enable_sif_output = true;
-               RR16(demod->my_i2c_dev_addr, ATV_TOP_AF_SIF_ATT__A, &data);
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, ATV_TOP_AF_SIF_ATT__A, &data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                output_cfg->sif_attenuation = (enum drxjsif_attenuation) data;
        }
 
@@ -8599,6 +11758,7 @@ ctrl_get_cfg_atv_agc_status(struct drx_demod_instance *demod,
                            struct drxj_cfg_atv_agc_status *agc_status)
 {
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
        u16 data = 0;
        u32 tmp = 0;
 
@@ -8614,7 +11774,11 @@ ctrl_get_cfg_atv_agc_status(struct drx_demod_instance *demod,
 
           IQM_AF_AGC_RF__A * 27 is 20 bits worst case.
         */
-       RR16(dev_addr, IQM_AF_AGC_RF__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_AGC_RF__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        tmp = ((u32) data) * 27 - ((u32) (data >> 2));  /* nA */
        agc_status->rf_agc_gain = (u16) (tmp / 1000);   /* uA */
        /* rounding */
@@ -8628,7 +11792,11 @@ ctrl_get_cfg_atv_agc_status(struct drx_demod_instance *demod,
 
           IQM_AF_AGC_IF__A * 27 is 20 bits worst case.
         */
-       RR16(dev_addr, IQM_AF_AGC_IF__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_AGC_IF__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        tmp = ((u32) data) * 27 - ((u32) (data >> 2));  /* nA */
        agc_status->if_agc_gain = (u16) (tmp / 1000);   /* uA */
        /* rounding */
@@ -8644,7 +11812,11 @@ ctrl_get_cfg_atv_agc_status(struct drx_demod_instance *demod,
           = (ATV_TOP_SFR_VID_GAIN__A/32) - 75 (in 0.1 dB)
         */
 
-       SARR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, &data);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* dividing by 32 inclusive rounding */
        data >>= 4;
        if ((data & 1) != 0) {
@@ -8661,7 +11833,11 @@ ctrl_get_cfg_atv_agc_status(struct drx_demod_instance *demod,
           = (SCU_RAM_ATV_SIF_GAIN__A/2) - 4 (in 0.1 dB)
         */
 
-       SARR16(dev_addr, SCU_RAM_ATV_SIF_GAIN__A, &data);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ATV_SIF_GAIN__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        data &= SCU_RAM_ATV_SIF_GAIN__M;
        /* dividing by 2 inclusive rounding */
        if ((data & 1) != 0) {
@@ -8671,7 +11847,11 @@ ctrl_get_cfg_atv_agc_status(struct drx_demod_instance *demod,
        agc_status->audio_agc_gain = ((s16) data) - 4;  /* 0.1 dB */
 
        /* Loop gain's */
-       SARR16(dev_addr, SCU_RAM_AGC_KI__A, &data);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_AGC_KI__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        agc_status->video_agc_loop_gain =
            ((data & SCU_RAM_AGC_KI_DGAIN__M) >> SCU_RAM_AGC_KI_DGAIN__B);
        agc_status->rf_agc_loop_gain =
@@ -8699,14 +11879,31 @@ rw_error:
 static int power_up_atv(struct drx_demod_instance *demod, enum drx_standard standard)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
 
        /* ATV NTSC */
-       WR16(dev_addr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* turn on IQM_AF */
-       CHK_ERROR(set_iqm_af(demod, true));
-       CHK_ERROR(adc_synchronization(demod));
+       rc = set_iqm_af(demod, true);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = adc_synchronization(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Audio, already done during set standard */
 
@@ -8739,6 +11936,7 @@ power_down_atv(struct drx_demod_instance *demod, enum drx_standard standard, boo
                /* *parameter   */ NULL,
                /* *result      */ NULL
        };
+       int rc;
        u16 cmd_result = 0;
 
        /* ATV NTSC */
@@ -8750,23 +11948,66 @@ power_down_atv(struct drx_demod_instance *demod, enum drx_standard standard, boo
        cmd_scu.result_len = 1;
        cmd_scu.parameter = NULL;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* Disable ATV outputs (ATV reset enables CVBS, undo this) */
-       WR16(dev_addr, ATV_TOP_STDBY__A, (ATV_TOP_STDBY_SIF_STDBY_STANDBY &
-                                        (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE)));
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STDBY__A, (ATV_TOP_STDBY_SIF_STDBY_STANDBY & (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE)), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (primary == true) {
-               WR16(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP);
-               CHK_ERROR(set_iqm_af(demod, false));
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_iqm_af(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        } else {
-               WR16(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP);
-               WR16(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+       }
+       rc = power_down_aud(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
        }
-       CHK_ERROR(power_down_aud(demod));
 
        return (DRX_STS_OK);
 rw_error:
@@ -9061,6 +12302,7 @@ trouble ?
        struct drx_common_attr *common_attr = NULL;
 #endif /* DRXJ_SPLIT_UCODE_UPLOAD */
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
        dev_addr = demod->my_i2c_dev_addr;
@@ -9074,12 +12316,18 @@ trouble ?
                ucode_info.mc_size = common_attr->microcode_size;
 
                /* Upload only audio microcode */
-               CHK_ERROR(ctrl_u_codeUpload
-                         (demod, &ucode_info, UCODE_UPLOAD, true));
+               rc = ctrl_u_codeUpload(demod, &ucode_info, UCODE_UPLOAD, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                if (common_attr->verify_microcode == true) {
-                       CHK_ERROR(ctrl_u_codeUpload
-                                 (demod, &ucode_info, UCODE_VERIFY, true));
+                       rc = ctrl_u_codeUpload(demod, &ucode_info, UCODE_VERIFY, true);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
 
                /* Prevent uploading audio microcode again */
@@ -9087,12 +12335,36 @@ trouble ?
        }
 #endif /* DRXJ_SPLIT_UCODE_UPLOAD */
 
-       WR16(dev_addr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP);
-       WR16(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
        /* Reset ATV SCU */
        cmd_scu.command = SCU_RAM_COMMAND_STANDARD_ATV |
            SCU_RAM_COMMAND_CMD_DEMOD_RESET;
@@ -9100,9 +12372,17 @@ trouble ?
        cmd_scu.result_len = 1;
        cmd_scu.parameter = NULL;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, ATV_TOP_MOD_CONTROL__A, ATV_TOP_MOD_CONTROL__PRE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_MOD_CONTROL__A, ATV_TOP_MOD_CONTROL__PRE, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* TODO remove AUTO/OFF patches after ucode fix. */
        switch (*standard) {
@@ -9110,29 +12390,73 @@ trouble ?
                /* NTSC */
                cmd_param = SCU_RAM_ATV_STANDARD_STANDARD_MN;
 
-               WR16(dev_addr, IQM_RT_LO_INCR__A, IQM_RT_LO_INCR_MN);
-               WR16(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M);
-               WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(ntsc_taps_re),
-                   ((u8 *)ntsc_taps_re));
-               WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(ntsc_taps_im),
-                   ((u8 *)ntsc_taps_im));
-
-               WR16(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_MN);
-               WR16(dev_addr, ATV_TOP_CR_CONT__A,
-                    (ATV_TOP_CR_CONT_CR_P_MN |
-                     ATV_TOP_CR_CONT_CR_D_MN | ATV_TOP_CR_CONT_CR_I_MN));
-               WR16(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_MN);
-               WR16(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_MN |
-                                              ATV_TOP_STD_VID_POL_MN));
-               WR16(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_MN);
-
-               WR16(dev_addr, SCU_RAM_ATV_AGC_MODE__A,
-                    (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM |
-                     SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE));
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000);
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000);
-               WR16(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A,
-                    SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_LO_INCR__A, IQM_RT_LO_INCR_MN, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(ntsc_taps_re), ((u8 *)ntsc_taps_re), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(ntsc_taps_im), ((u8 *)ntsc_taps_im), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_MN, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_CONT__A, (ATV_TOP_CR_CONT_CR_P_MN | ATV_TOP_CR_CONT_CR_D_MN | ATV_TOP_CR_CONT_CR_I_MN), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_MN, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_MN | ATV_TOP_STD_VID_POL_MN), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_MN, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AGC_MODE__A, (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A, SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
                ext_attr->phase_correction_bypass = false;
                ext_attr->enable_cvbs_output = true;
                break;
@@ -9140,21 +12464,52 @@ trouble ?
                /* FM */
                cmd_param = SCU_RAM_ATV_STANDARD_STANDARD_FM;
 
-               WR16(dev_addr, IQM_RT_LO_INCR__A, 2994);
-               WR16(dev_addr, IQM_CF_MIDTAP__A, 0);
-               WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(fm_taps_re),
-                   ((u8 *)fm_taps_re));
-               WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(fm_taps_im),
-                   ((u8 *)fm_taps_im));
-               WR16(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_FM |
-                                              ATV_TOP_STD_VID_POL_FM));
-               WR16(dev_addr, ATV_TOP_MOD_CONTROL__A, 0);
-               WR16(dev_addr, ATV_TOP_CR_CONT__A, 0);
-
-               WR16(dev_addr, SCU_RAM_ATV_AGC_MODE__A,
-                    (SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW |
-                     SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM));
-               WR16(dev_addr, IQM_RT_ROT_BP__A, IQM_RT_ROT_BP_ROT_OFF_OFF);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_LO_INCR__A, 2994, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(fm_taps_re), ((u8 *)fm_taps_re), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(fm_taps_im), ((u8 *)fm_taps_im), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_FM | ATV_TOP_STD_VID_POL_FM), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_MOD_CONTROL__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_CONT__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AGC_MODE__A, (SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW | SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_ROT_BP__A, IQM_RT_ROT_BP_ROT_OFF_OFF, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
                ext_attr->phase_correction_bypass = true;
                ext_attr->enable_cvbs_output = false;
                break;
@@ -9162,27 +12517,71 @@ trouble ?
                /* PAL/SECAM B/G */
                cmd_param = SCU_RAM_ATV_STANDARD_STANDARD_B;
 
-               WR16(dev_addr, IQM_RT_LO_INCR__A, 1820);        /* TODO check with IS */
-               WR16(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M);
-               WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(bg_taps_re),
-                   ((u8 *)bg_taps_re));
-               WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(bg_taps_im),
-                   ((u8 *)bg_taps_im));
-               WR16(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_BG);
-               WR16(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_BG);
-               WR16(dev_addr, ATV_TOP_CR_CONT__A,
-                    (ATV_TOP_CR_CONT_CR_P_BG |
-                     ATV_TOP_CR_CONT_CR_D_BG | ATV_TOP_CR_CONT_CR_I_BG));
-               WR16(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_BG);
-               WR16(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_BG |
-                                              ATV_TOP_STD_VID_POL_BG));
-               WR16(dev_addr, SCU_RAM_ATV_AGC_MODE__A,
-                    (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM |
-                     SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE));
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000);
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000);
-               WR16(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A,
-                    SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_LO_INCR__A, 1820, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }       /* TODO check with IS */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(bg_taps_re), ((u8 *)bg_taps_re), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(bg_taps_im), ((u8 *)bg_taps_im), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_BG, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_BG, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_CONT__A, (ATV_TOP_CR_CONT_CR_P_BG | ATV_TOP_CR_CONT_CR_D_BG | ATV_TOP_CR_CONT_CR_I_BG), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_BG, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_BG | ATV_TOP_STD_VID_POL_BG), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AGC_MODE__A, (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A, SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
                ext_attr->phase_correction_bypass = false;
                ext_attr->atv_if_agc_cfg.ctrl_mode = DRX_AGC_CTRL_AUTO;
                ext_attr->enable_cvbs_output = true;
@@ -9191,27 +12590,71 @@ trouble ?
                /* PAL/SECAM D/K */
                cmd_param = SCU_RAM_ATV_STANDARD_STANDARD_DK;
 
-               WR16(dev_addr, IQM_RT_LO_INCR__A, 2225);        /* TODO check with IS */
-               WR16(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M);
-               WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re),
-                   ((u8 *)dk_i_l_lp_taps_re));
-               WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im),
-                   ((u8 *)dk_i_l_lp_taps_im));
-               WR16(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_DK);
-               WR16(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_DK);
-               WR16(dev_addr, ATV_TOP_CR_CONT__A,
-                    (ATV_TOP_CR_CONT_CR_P_DK |
-                     ATV_TOP_CR_CONT_CR_D_DK | ATV_TOP_CR_CONT_CR_I_DK));
-               WR16(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_DK);
-               WR16(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_DK |
-                                              ATV_TOP_STD_VID_POL_DK));
-               WR16(dev_addr, SCU_RAM_ATV_AGC_MODE__A,
-                    (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM |
-                     SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE));
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000);
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000);
-               WR16(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A,
-                    SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_DK);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_LO_INCR__A, 2225, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }       /* TODO check with IS */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), ((u8 *)dk_i_l_lp_taps_re), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), ((u8 *)dk_i_l_lp_taps_im), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_DK, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_DK, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_CONT__A, (ATV_TOP_CR_CONT_CR_P_DK | ATV_TOP_CR_CONT_CR_D_DK | ATV_TOP_CR_CONT_CR_I_DK), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_DK, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_DK | ATV_TOP_STD_VID_POL_DK), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AGC_MODE__A, (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A, SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_DK, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
                ext_attr->phase_correction_bypass = false;
                ext_attr->atv_if_agc_cfg.ctrl_mode = DRX_AGC_CTRL_AUTO;
                ext_attr->enable_cvbs_output = true;
@@ -9220,27 +12663,71 @@ trouble ?
                /* PAL/SECAM I   */
                cmd_param = SCU_RAM_ATV_STANDARD_STANDARD_I;
 
-               WR16(dev_addr, IQM_RT_LO_INCR__A, 2225);        /* TODO check with IS */
-               WR16(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M);
-               WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re),
-                   ((u8 *)dk_i_l_lp_taps_re));
-               WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im),
-                   ((u8 *)dk_i_l_lp_taps_im));
-               WR16(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_I);
-               WR16(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_I);
-               WR16(dev_addr, ATV_TOP_CR_CONT__A,
-                    (ATV_TOP_CR_CONT_CR_P_I |
-                     ATV_TOP_CR_CONT_CR_D_I | ATV_TOP_CR_CONT_CR_I_I));
-               WR16(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_I);
-               WR16(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_I |
-                                              ATV_TOP_STD_VID_POL_I));
-               WR16(dev_addr, SCU_RAM_ATV_AGC_MODE__A,
-                    (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM |
-                     SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE));
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000);
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000);
-               WR16(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A,
-                    SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_I);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_LO_INCR__A, 2225, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }       /* TODO check with IS */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), ((u8 *)dk_i_l_lp_taps_re), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), ((u8 *)dk_i_l_lp_taps_im), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_I, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_I, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_CONT__A, (ATV_TOP_CR_CONT_CR_P_I | ATV_TOP_CR_CONT_CR_D_I | ATV_TOP_CR_CONT_CR_I_I), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_I, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_I | ATV_TOP_STD_VID_POL_I), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AGC_MODE__A, (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A, SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_I, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
                ext_attr->phase_correction_bypass = false;
                ext_attr->atv_if_agc_cfg.ctrl_mode = DRX_AGC_CTRL_AUTO;
                ext_attr->enable_cvbs_output = true;
@@ -9249,28 +12736,71 @@ trouble ?
                /* PAL/SECAM L with negative modulation */
                cmd_param = SCU_RAM_ATV_STANDARD_STANDARD_L;
 
-               WR16(dev_addr, IQM_RT_LO_INCR__A, 2225);        /* TODO check with IS */
-               WR16(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_L);
-               WR16(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M);
-               WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re),
-                   ((u8 *)dk_i_l_lp_taps_re));
-               WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im),
-                   ((u8 *)dk_i_l_lp_taps_im));
-               WR16(dev_addr, ATV_TOP_CR_AMP_TH__A, 0x2);      /* TODO check with IS */
-               WR16(dev_addr, ATV_TOP_CR_CONT__A,
-                    (ATV_TOP_CR_CONT_CR_P_L |
-                     ATV_TOP_CR_CONT_CR_D_L | ATV_TOP_CR_CONT_CR_I_L));
-               WR16(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_L);
-               WR16(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_L |
-                                              ATV_TOP_STD_VID_POL_L));
-               WR16(dev_addr, SCU_RAM_ATV_AGC_MODE__A,
-                    (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM |
-                     SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE |
-                     SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW));
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000);
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000);
-               WR16(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A,
-                    SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_LO_INCR__A, 2225, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }       /* TODO check with IS */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_L, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), ((u8 *)dk_i_l_lp_taps_re), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), ((u8 *)dk_i_l_lp_taps_im), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_AMP_TH__A, 0x2, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }       /* TODO check with IS */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_CONT__A, (ATV_TOP_CR_CONT_CR_P_L | ATV_TOP_CR_CONT_CR_D_L | ATV_TOP_CR_CONT_CR_I_L), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_L, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_L | ATV_TOP_STD_VID_POL_L), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AGC_MODE__A, (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM | SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE | SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A, SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
                ext_attr->phase_correction_bypass = false;
                ext_attr->atv_if_agc_cfg.ctrl_mode = DRX_AGC_CTRL_USER;
                ext_attr->atv_if_agc_cfg.output_level = ext_attr->atv_rf_agc_cfg.top;
@@ -9280,28 +12810,71 @@ trouble ?
                /* PAL/SECAM L with positive modulation */
                cmd_param = SCU_RAM_ATV_STANDARD_STANDARD_LP;
 
-               WR16(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_LP);
-               WR16(dev_addr, IQM_RT_LO_INCR__A, 2225);        /* TODO check with IS */
-               WR16(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M);
-               WRB(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re),
-                   ((u8 *)dk_i_l_lp_taps_re));
-               WRB(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im),
-                   ((u8 *)dk_i_l_lp_taps_im));
-               WR16(dev_addr, ATV_TOP_CR_AMP_TH__A, 0x2);      /* TODO check with IS */
-               WR16(dev_addr, ATV_TOP_CR_CONT__A,
-                    (ATV_TOP_CR_CONT_CR_P_LP |
-                     ATV_TOP_CR_CONT_CR_D_LP | ATV_TOP_CR_CONT_CR_I_LP));
-               WR16(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_LP);
-               WR16(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_LP |
-                                              ATV_TOP_STD_VID_POL_LP));
-               WR16(dev_addr, SCU_RAM_ATV_AGC_MODE__A,
-                    (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM |
-                     SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE |
-                     SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW));
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000);
-               WR16(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000);
-               WR16(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A,
-                    SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_LP, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_LO_INCR__A, 2225, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }       /* TODO check with IS */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), ((u8 *)dk_i_l_lp_taps_re), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_block_func(dev_addr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), ((u8 *)dk_i_l_lp_taps_im), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_AMP_TH__A, 0x2, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }       /* TODO check with IS */
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_CONT__A, (ATV_TOP_CR_CONT_CR_P_LP | ATV_TOP_CR_CONT_CR_D_LP | ATV_TOP_CR_CONT_CR_I_LP), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_LP, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_LP | ATV_TOP_STD_VID_POL_LP), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AGC_MODE__A, (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM | SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE | SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW), 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MAX_REF__A, SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
                ext_attr->phase_correction_bypass = false;
                ext_attr->atv_if_agc_cfg.ctrl_mode = DRX_AGC_CTRL_USER;
                ext_attr->atv_if_agc_cfg.output_level = ext_attr->atv_rf_agc_cfg.top;
@@ -9313,56 +12886,199 @@ trouble ?
 
        /* Common initializations FM & NTSC & B/G & D/K & I & L & LP */
        if (ext_attr->has_lna == false) {
-               WR16(dev_addr, IQM_AF_AMUX__A, 0x01);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_AMUX__A, 0x01, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
        }
 
-       WR16(dev_addr, SCU_RAM_ATV_STANDARD__A, 0x002);
-       WR16(dev_addr, IQM_AF_CLP_LEN__A, IQM_AF_CLP_LEN_ATV);
-       WR16(dev_addr, IQM_AF_CLP_TH__A, IQM_AF_CLP_TH_ATV);
-       WR16(dev_addr, IQM_AF_SNS_LEN__A, IQM_AF_SNS_LEN_ATV);
-       CHK_ERROR(ctrl_set_cfg_pre_saw(demod, &(ext_attr->atv_pre_saw_cfg)));
-       WR16(dev_addr, IQM_AF_AGC_IF__A, 10248);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_STANDARD__A, 0x002, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_CLP_LEN__A, IQM_AF_CLP_LEN_ATV, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_CLP_TH__A, IQM_AF_CLP_TH_ATV, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_SNS_LEN__A, IQM_AF_SNS_LEN_ATV, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->atv_pre_saw_cfg));
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_AGC_IF__A, 10248, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        ext_attr->iqm_rc_rate_ofs = 0x00200000L;
-       WR32(dev_addr, IQM_RC_RATE_OFS_LO__A, ext_attr->iqm_rc_rate_ofs);
-       WR16(dev_addr, IQM_RC_ADJ_SEL__A, IQM_RC_ADJ_SEL_B_OFF);
-       WR16(dev_addr, IQM_RC_STRETCH__A, IQM_RC_STRETCH_ATV);
+       rc = DRXJ_DAP.write_reg32func(dev_addr, IQM_RC_RATE_OFS_LO__A, ext_attr->iqm_rc_rate_ofs, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_ADJ_SEL__A, IQM_RC_ADJ_SEL_B_OFF, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RC_STRETCH__A, IQM_RC_STRETCH_ATV, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
-       WR16(dev_addr, IQM_RT_ACTIVE__A, IQM_RT_ACTIVE_ACTIVE_RT_ATV_FCR_ON |
-            IQM_RT_ACTIVE_ACTIVE_CR_ATV_CR_ON);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_ACTIVE__A, IQM_RT_ACTIVE_ACTIVE_RT_ATV_FCR_ON | IQM_RT_ACTIVE_ACTIVE_CR_ATV_CR_ON, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
-       WR16(dev_addr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_ATV__M);
-       WR16(dev_addr, IQM_CF_SYMMETRIC__A, IQM_CF_SYMMETRIC_IM__M);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_ATV__M, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_CF_SYMMETRIC__A, IQM_CF_SYMMETRIC_IM__M, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
        /* default: SIF in standby */
-       WR16(dev_addr, ATV_TOP_SYNC_SLICE__A, ATV_TOP_SYNC_SLICE_MN);
-       WR16(dev_addr, ATV_TOP_MOD_ACCU__A, ATV_TOP_MOD_ACCU__PRE);
-
-       WR16(dev_addr, SCU_RAM_ATV_SIF_GAIN__A, 0x080);
-       WR16(dev_addr, SCU_RAM_ATV_FAGC_TH_RED__A, 10);
-       WR16(dev_addr, SCU_RAM_ATV_AAGC_CNT__A, 7);
-       WR16(dev_addr, SCU_RAM_ATV_NAGC_KI_MIN__A, 0x0225);
-       WR16(dev_addr, SCU_RAM_ATV_NAGC_KI_MAX__A, 0x0547);
-       WR16(dev_addr, SCU_RAM_ATV_KI_CHANGE_TH__A, 20);
-       WR16(dev_addr, SCU_RAM_ATV_LOCK__A, 0);
-
-       WR16(dev_addr, IQM_RT_DELAY__A, IQM_RT_DELAY__PRE);
-       WR16(dev_addr, SCU_RAM_ATV_BPC_KI_MIN__A, 531);
-       WR16(dev_addr, SCU_RAM_ATV_PAGC_KI_MIN__A, 1061);
-       WR16(dev_addr, SCU_RAM_ATV_BP_REF_MIN__A, 100);
-       WR16(dev_addr, SCU_RAM_ATV_BP_REF_MAX__A, 260);
-       WR16(dev_addr, SCU_RAM_ATV_BP_LVL__A, 0);
-       WR16(dev_addr, SCU_RAM_ATV_AMS_MAX__A, 0);
-       WR16(dev_addr, SCU_RAM_ATV_AMS_MIN__A, 2047);
-       WR16(dev_addr, SCU_RAM_GPIO__A, 0);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_SYNC_SLICE__A, ATV_TOP_SYNC_SLICE_MN, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_MOD_ACCU__A, ATV_TOP_MOD_ACCU__PRE, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_SIF_GAIN__A, 0x080, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_FAGC_TH_RED__A, 10, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AAGC_CNT__A, 7, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_NAGC_KI_MIN__A, 0x0225, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_NAGC_KI_MAX__A, 0x0547, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_KI_CHANGE_TH__A, 20, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_LOCK__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_RT_DELAY__A, IQM_RT_DELAY__PRE, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_BPC_KI_MIN__A, 531, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_PAGC_KI_MIN__A, 1061, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_BP_REF_MIN__A, 100, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_BP_REF_MAX__A, 260, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_BP_LVL__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MAX__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_AMS_MIN__A, 2047, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_GPIO__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* Override reset values with current shadow settings */
-       CHK_ERROR(atv_update_config(demod, true));
+       rc = atv_update_config(demod, true);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Configure/restore AGC settings */
-       CHK_ERROR(init_agc(demod));
-       CHK_ERROR(set_agc_if(demod, &(ext_attr->atv_if_agc_cfg), false));
-       CHK_ERROR(set_agc_rf(demod, &(ext_attr->atv_rf_agc_cfg), false));
-       CHK_ERROR(ctrl_set_cfg_pre_saw(demod, &(ext_attr->atv_pre_saw_cfg)));
+       rc = init_agc(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_agc_if(demod, &(ext_attr->atv_if_agc_cfg), false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_agc_rf(demod, &(ext_attr->atv_rf_agc_cfg), false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = ctrl_set_cfg_pre_saw(demod, &(ext_attr->atv_pre_saw_cfg));
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Set SCU ATV substandard,assuming this doesn't require running ATV block */
        cmd_scu.command = SCU_RAM_COMMAND_STANDARD_ATV |
@@ -9371,14 +13087,30 @@ trouble ?
        cmd_scu.result_len = 1;
        cmd_scu.parameter = &cmd_param;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* turn the analog work around on/off (must after set_env b/c it is set in mc) */
        if (ext_attr->mfx == 0x03) {
-               WR16(dev_addr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 0);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 0, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
        } else {
-               WR16(dev_addr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 1);
-               WR16(dev_addr, SCU_RAM_ATV_IIR_CRIT__A, 225);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 1, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ATV_IIR_CRIT__A, 225, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
        }
 
        return (DRX_STS_OK);
@@ -9416,6 +13148,7 @@ set_atv_channel(struct drx_demod_instance *demod,
        u16 cmd_result = 0;
        struct drxj_data *ext_attr = NULL;
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -9430,8 +13163,16 @@ set_atv_channel(struct drx_demod_instance *demod,
                ext_attr->mirror = channel->mirror;
        }
 
-       CHK_ERROR(set_frequency(demod, channel, tuner_freq_offset));
-       WR16(dev_addr, ATV_TOP_CR_FREQ__A, ATV_TOP_CR_FREQ__PRE);
+       rc = set_frequency(demod, channel, tuner_freq_offset);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_CR_FREQ__A, ATV_TOP_CR_FREQ__PRE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Start ATV SCU */
        cmd_scu.command = SCU_RAM_COMMAND_STANDARD_ATV |
@@ -9440,7 +13181,11 @@ set_atv_channel(struct drx_demod_instance *demod,
        cmd_scu.result_len = 1;
        cmd_scu.parameter = NULL;
        cmd_scu.result = &cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
 /*   if ( (ext_attr->standard == DRX_STANDARD_FM) && (ext_attr->flagSetAUDdone == true) )
    {
@@ -9475,6 +13220,7 @@ get_atv_channel(struct drx_demod_instance *demod,
 {
        s32 offset = 0;
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
 
        /* Bandwidth */
        channel->bandwidth = ((struct drxj_data *) demod->my_ext_attr)->curr_bandwidth;
@@ -9489,7 +13235,11 @@ get_atv_channel(struct drx_demod_instance *demod,
                        u16 measured_offset = 0;
 
                        /* get measured frequency offset */
-                       RR16(dev_addr, ATV_TOP_CR_FREQ__A, &measured_offset);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, ATV_TOP_CR_FREQ__A, &measured_offset, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        /* Signed 8 bit register => sign extension needed */
                        if ((measured_offset & 0x0080) != 0) {
                                /* sign extension */
@@ -9504,7 +13254,11 @@ get_atv_channel(struct drx_demod_instance *demod,
                        u16 measured_offset = 0;
 
                        /* get measured frequency offset */
-                       RR16(dev_addr, ATV_TOP_CR_FREQ__A, &measured_offset);
+                       rc = DRXJ_DAP.read_reg16func(dev_addr, ATV_TOP_CR_FREQ__A, &measured_offset, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        /* Signed 8 bit register => sign extension needed */
                        if ((measured_offset & 0x0080) != 0) {
                                /* sign extension */
@@ -9557,6 +13311,7 @@ get_atv_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        /* All weights must add up to 100 (%)
           TODO: change weights when IF ctrl is available */
@@ -9590,12 +13345,20 @@ get_atv_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
        case DRX_STANDARD_PAL_SECAM_L:  /* fallthrough */
        case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */
        case DRX_STANDARD_NTSC:
-               SARR16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, &digital_curr_gain);
+               rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ATV_VID_GAIN_HI__A, &digital_curr_gain, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                digital_max_gain = 22512;       /* taken from ucode */
                digital_min_gain = 2400;        /* taken from ucode */
                break;
        case DRX_STANDARD_FM:
-               SARR16(dev_addr, SCU_RAM_ATV_SIF_GAIN__A, &digital_curr_gain);
+               rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ATV_SIF_GAIN__A, &digital_curr_gain, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                digital_max_gain = 0x4ff;       /* taken from ucode */
                digital_min_gain = 0;   /* taken from ucode */
                break;
@@ -9603,8 +13366,16 @@ get_atv_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
                return (DRX_STS_ERROR);
                break;
        }
-       RR16(dev_addr, IQM_AF_AGC_RF__A, &rf_curr_gain);
-       RR16(dev_addr, IQM_AF_AGC_IF__A, &if_curr_gain);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_AGC_RF__A, &rf_curr_gain, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_AF_AGC_IF__A, &if_curr_gain, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* clipping */
        if (digital_curr_gain >= digital_max_gain)
@@ -9666,6 +13437,7 @@ atv_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_qu
 {
        struct i2c_device_addr *dev_addr = NULL;
        u16 quality_indicator = 0;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
 
@@ -9684,7 +13456,11 @@ atv_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_qu
           0x700..0x7ff: no signal      => 0%  .. 30%
         */
 
-       SARR16(dev_addr, SCU_RAM_ATV_CR_LOCK__A, &quality_indicator);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ATV_CR_LOCK__A, &quality_indicator, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        quality_indicator &= SCU_RAM_ATV_CR_LOCK_CR_LOCK__M;
        if (quality_indicator <= 0x80) {
                sig_quality->indicator =
@@ -9724,16 +13500,33 @@ static int power_up_aud(struct drx_demod_instance *demod, bool set_standard)
 {
        enum drx_aud_standard aud_standard = DRX_AUD_STANDARD_AUTO;
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
 
-       WR16(dev_addr, AUD_TOP_COMM_EXEC__A, AUD_TOP_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_TOP_COMM_EXEC__A, AUD_TOP_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* setup TR interface: R/W mode, fifosize=8 */
-       WR16(dev_addr, AUD_TOP_TR_MDE__A, 8);
-       WR16(dev_addr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_TOP_TR_MDE__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (set_standard == true) {
-               CHK_ERROR(aud_ctrl_set_standard(demod, &aud_standard));
+               rc = aud_ctrl_set_standard(demod, &aud_standard);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        return DRX_STS_OK;
@@ -9753,11 +13546,16 @@ static int power_down_aud(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        dev_addr = (struct i2c_device_addr *)demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
-       WR16(dev_addr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        ext_attr->aud_data.audio_is_active = false;
 
@@ -9778,6 +13576,7 @@ static int aud_get_modus(struct drx_demod_instance *demod, u16 *modus)
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        u16 r_modus = 0;
        u16 r_modusHi = 0;
@@ -9792,13 +13591,25 @@ static int aud_get_modus(struct drx_demod_instance *demod, u16 *modus)
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        /* Modus register is combined in to RAM location */
-       RR16(dev_addr, AUD_DEM_RAM_MODUS_HI__A, &r_modusHi);
-       RR16(dev_addr, AUD_DEM_RAM_MODUS_LO__A, &r_modusLo);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_MODUS_HI__A, &r_modusHi, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_MODUS_LO__A, &r_modusLo, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        r_modus = ((r_modusHi << 12) & AUD_DEM_RAM_MODUS_HI__M)
            | (((r_modusLo & AUD_DEM_RAM_MODUS_LO__M)));
@@ -9823,6 +13634,7 @@ aud_ctrl_get_cfg_rds(struct drx_demod_instance *demod, struct drx_cfg_aud_rds *s
 {
        struct i2c_device_addr *addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        u16 r_rds_array_cnt_init = 0;
        u16 r_rds_array_cnt_check = 0;
@@ -9838,13 +13650,21 @@ aud_ctrl_get_cfg_rds(struct drx_demod_instance *demod, struct drx_cfg_aud_rds *s
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        status->valid = false;
 
-       RR16(addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &r_rds_array_cnt_init);
+       rc = DRXJ_DAP.read_reg16func(addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &r_rds_array_cnt_init, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (r_rds_array_cnt_init ==
            AUD_DEM_RD_RDS_ARRAY_CNT_RDS_ARRAY_CT_RDS_DATA_NOT_VALID) {
@@ -9864,11 +13684,19 @@ aud_ctrl_get_cfg_rds(struct drx_demod_instance *demod, struct drx_cfg_aud_rds *s
        /* new data */
        /* read the data */
        for (rds_data_cnt = 0; rds_data_cnt < AUD_RDS_ARRAY_SIZE; rds_data_cnt++) {
-               RR16(addr, AUD_DEM_RD_RDS_DATA__A, &r_rds_data);
+               rc = DRXJ_DAP.read_reg16func(addr, AUD_DEM_RD_RDS_DATA__A, &r_rds_data, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                status->data[rds_data_cnt] = r_rds_data;
        }
 
-       RR16(addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &r_rds_array_cnt_check);
+       rc = DRXJ_DAP.read_reg16func(addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &r_rds_array_cnt_check, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (r_rds_array_cnt_check == r_rds_array_cnt_init) {
                status->valid = true;
@@ -9893,7 +13721,7 @@ aud_ctrl_get_carrier_detect_status(struct drx_demod_instance *demod, struct drx_
 {
        struct drxj_data *ext_attr = NULL;
        struct i2c_device_addr *dev_addr = NULL;
-
+       int rc;
        u16 r_data = 0;
 
        if (status == NULL) {
@@ -9905,7 +13733,11 @@ aud_ctrl_get_carrier_detect_status(struct drx_demod_instance *demod, struct drx_
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
@@ -9917,7 +13749,11 @@ aud_ctrl_get_carrier_detect_status(struct drx_demod_instance *demod, struct drx_
        status->stereo = false;
 
        /* read stereo sound mode indication */
-       RR16(dev_addr, AUD_DEM_RD_STATUS__A, &r_data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RD_STATUS__A, &r_data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* carrier a detected */
        if ((r_data & AUD_DEM_RD_STATUS_STAT_CARR_A__M) ==
@@ -9972,6 +13808,7 @@ aud_ctrl_get_status(struct drx_demod_instance *demod, struct drx_aud_status *sta
        struct drxj_data *ext_attr = NULL;
        struct i2c_device_addr *dev_addr = NULL;
        struct drx_cfg_aud_rds rds = { false, {0} };
+       int rc;
        u16 r_data = 0;
 
        if (status == NULL) {
@@ -9982,15 +13819,27 @@ aud_ctrl_get_status(struct drx_demod_instance *demod, struct drx_aud_status *sta
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /* carrier detection */
-       CHK_ERROR(aud_ctrl_get_carrier_detect_status(demod, status));
+       rc = aud_ctrl_get_carrier_detect_status(demod, status);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* rds data */
        status->rds = false;
-       CHK_ERROR(aud_ctrl_get_cfg_rds(demod, &rds));
+       rc = aud_ctrl_get_cfg_rds(demod, &rds);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        status->rds = ext_attr->aud_data.rds_data_present;
 
        /* fm_ident */
-       RR16(dev_addr, AUD_DSP_RD_FM_IDENT_VALUE__A, &r_data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_RD_FM_IDENT_VALUE__A, &r_data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        r_data >>= AUD_DSP_RD_FM_IDENT_VALUE_FM_IDENT__B;
        status->fm_ident = (s8) r_data;
 
@@ -10011,6 +13860,7 @@ aud_ctrl_get_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        u16 r_volume = 0;
        u16 r_avc = 0;
@@ -10026,13 +13876,21 @@ aud_ctrl_get_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        /* volume */
        volume->mute = ext_attr->aud_data.volume.mute;
-       RR16(dev_addr, AUD_DSP_WR_VOLUME__A, &r_volume);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_VOLUME__A, &r_volume, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (r_volume == 0) {
                volume->mute = true;
                volume->volume = ext_attr->aud_data.volume.volume;
@@ -10050,7 +13908,11 @@ aud_ctrl_get_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
        }
 
        /* automatic volume control */
-       RR16(dev_addr, AUD_DSP_WR_AVC__A, &r_avc);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_AVC__A, &r_avc, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if ((r_avc & AUD_DSP_WR_AVC_AVC_ON__M) == AUD_DSP_WR_AVC_AVC_ON_OFF)
        {
@@ -10118,12 +13980,20 @@ aud_ctrl_get_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
 
        /* QP vaues */
        /* left carrier */
-       RR16(dev_addr, AUD_DSP_RD_QPEAK_L__A, &r_strength_left);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_RD_QPEAK_L__A, &r_strength_left, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        volume->strength_left = (((s16) log1_times100(r_strength_left)) -
                                AUD_CARRIER_STRENGTH_QP_0DB_LOG10T100) / 5;
 
        /* right carrier */
-       RR16(dev_addr, AUD_DSP_RD_QPEAK_R__A, &r_strength_right);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_RD_QPEAK_R__A, &r_strength_right, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        volume->strength_right = (((s16) log1_times100(r_strength_right)) -
                                 AUD_CARRIER_STRENGTH_QP_0DB_LOG10T100) / 5;
 
@@ -10144,6 +14014,7 @@ aud_ctrl_set_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        u16 w_volume = 0;
        u16 w_avc = 0;
@@ -10157,7 +14028,11 @@ aud_ctrl_set_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
@@ -10168,7 +14043,11 @@ aud_ctrl_set_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
                return DRX_STS_INVALID_ARG;
        }
 
-       RR16(dev_addr, AUD_DSP_WR_VOLUME__A, &w_volume);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_VOLUME__A, &w_volume, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* clear the volume mask */
        w_volume &= (u16) ~AUD_DSP_WR_VOLUME_VOL_MAIN__M;
@@ -10182,10 +14061,18 @@ aud_ctrl_set_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
                                    AUD_DSP_WR_VOLUME_VOL_MAIN__B);
        }
 
-       WR16(dev_addr, AUD_DSP_WR_VOLUME__A, w_volume);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_VOLUME__A, w_volume, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* automatic volume control */
-       RR16(dev_addr, AUD_DSP_WR_AVC__A, &w_avc);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_AVC__A, &w_avc, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* clear masks that require writing */
        w_avc &= (u16) ~AUD_DSP_WR_AVC_AVC_ON__M;
@@ -10256,7 +14143,11 @@ aud_ctrl_set_cfg_volume(struct drx_demod_instance *demod, struct drx_cfg_aud_vol
        w_avc &= (u16) ~AUD_DSP_WR_AVC_AVC_REF_LEV__M;
        w_avc |= (u16) (volume->avc_ref_level << AUD_DSP_WR_AVC_AVC_REF_LEV__B);
 
-       WR16(dev_addr, AUD_DSP_WR_AVC__A, w_avc);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_AVC__A, w_avc, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* all done, store config in data structure */
        ext_attr->aud_data.volume = *volume;
@@ -10278,7 +14169,7 @@ aud_ctrl_get_cfg_output_i2s(struct drx_demod_instance *demod, struct drx_cfg_i2s
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
-
+       int rc;
        u16 w_i2s_config = 0;
        u16 r_i2s_freq = 0;
 
@@ -10291,12 +14182,24 @@ aud_ctrl_get_cfg_output_i2s(struct drx_demod_instance *demod, struct drx_cfg_i2s
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       RR16(dev_addr, AUD_DEM_RAM_I2S_CONFIG2__A, &w_i2s_config);
-       RR16(dev_addr, AUD_DSP_WR_I2S_OUT_FS__A, &r_i2s_freq);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_I2S_CONFIG2__A, &w_i2s_config, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_I2S_OUT_FS__A, &r_i2s_freq, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* I2S mode */
        switch (w_i2s_config & AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST__M) {
@@ -10380,7 +14283,7 @@ aud_ctrl_set_cfg_output_i2s(struct drx_demod_instance *demod, struct drx_cfg_i2s
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
-
+       int rc;
        u16 w_i2s_config = 0;
        u16 w_i2s_pads_data_da = 0;
        u16 w_i2s_pads_data_cl = 0;
@@ -10396,11 +14299,19 @@ aud_ctrl_set_cfg_output_i2s(struct drx_demod_instance *demod, struct drx_cfg_i2s
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       RR16(dev_addr, AUD_DEM_RAM_I2S_CONFIG2__A, &w_i2s_config);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_I2S_CONFIG2__A, &w_i2s_config, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* I2S mode */
        w_i2s_config &= (u16) ~AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST__M;
@@ -10485,11 +14396,23 @@ aud_ctrl_set_cfg_output_i2s(struct drx_demod_instance *demod, struct drx_cfg_i2s
                w_i2s_freq *= 2;
        }
 
-       WR16(dev_addr, AUD_DEM_WR_I2S_CONFIG2__A, w_i2s_config);
-       WR16(dev_addr, AUD_DSP_WR_I2S_OUT_FS__A, (u16) w_i2s_freq);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_I2S_CONFIG2__A, w_i2s_config, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_I2S_OUT_FS__A, (u16)w_i2s_freq, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* configure I2S output pads for master or slave mode */
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (output->mode == DRX_I2S_MODE_MASTER) {
                w_i2s_pads_data_da = SIO_PDR_I2S_DA_CFG_MODE__MASTER |
@@ -10507,11 +14430,27 @@ aud_ctrl_set_cfg_output_i2s(struct drx_demod_instance *demod, struct drx_cfg_i2s
                    SIO_PDR_I2S_WS_CFG_DRIVE__SLAVE;
        }
 
-       WR16(dev_addr, SIO_PDR_I2S_DA_CFG__A, w_i2s_pads_data_da);
-       WR16(dev_addr, SIO_PDR_I2S_CL_CFG__A, w_i2s_pads_data_cl);
-       WR16(dev_addr, SIO_PDR_I2S_WS_CFG__A, w_i2s_pads_data_ws);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2S_DA_CFG__A, w_i2s_pads_data_da, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2S_CL_CFG__A, w_i2s_pads_data_cl, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_I2S_WS_CFG__A, w_i2s_pads_data_ws, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* all done, store config in data structure */
        ext_attr->aud_data.i2sdata = *output;
@@ -10535,6 +14474,7 @@ aud_ctrl_get_cfg_auto_sound(struct drx_demod_instance *demod,
                            enum drx_cfg_aud_auto_sound *auto_sound)
 {
        struct drxj_data *ext_attr = NULL;
+       int rc;
        u16 r_modus = 0;
 
        if (auto_sound == NULL)
@@ -10544,11 +14484,19 @@ aud_ctrl_get_cfg_auto_sound(struct drx_demod_instance *demod,
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       CHK_ERROR(aud_get_modus(demod, &r_modus));
+       rc = aud_get_modus(demod, &r_modus);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        switch (r_modus & (AUD_DEM_WR_MODUS_MOD_ASS__M |
                          AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG__M)) {
@@ -10589,7 +14537,7 @@ aud_ctr_setl_cfg_auto_sound(struct drx_demod_instance *demod,
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 r_modus = 0;
        u16 w_modus = 0;
 
@@ -10602,11 +14550,19 @@ aud_ctr_setl_cfg_auto_sound(struct drx_demod_instance *demod,
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       CHK_ERROR(aud_get_modus(demod, &r_modus));
+       rc = aud_get_modus(demod, &r_modus);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        w_modus = r_modus;
        /* clear ASS & ASC bits */
@@ -10631,7 +14587,11 @@ aud_ctr_setl_cfg_auto_sound(struct drx_demod_instance *demod,
        }
 
        if (w_modus != r_modus) {
-               WR16(dev_addr, AUD_DEM_WR_MODUS__A, w_modus);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_MODUS__A, w_modus, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
        /* copy to data structure */
        ext_attr->aud_data.auto_sound = *auto_sound;
@@ -10654,7 +14614,7 @@ aud_ctrl_get_cfg_ass_thres(struct drx_demod_instance *demod, struct drx_cfg_aud_
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 thres_a2 = 0;
        u16 thres_btsc = 0;
        u16 thres_nicam = 0;
@@ -10668,13 +14628,29 @@ aud_ctrl_get_cfg_ass_thres(struct drx_demod_instance *demod, struct drx_cfg_aud_
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       RR16(dev_addr, AUD_DEM_RAM_A2_THRSHLD__A, &thres_a2);
-       RR16(dev_addr, AUD_DEM_RAM_BTSC_THRSHLD__A, &thres_btsc);
-       RR16(dev_addr, AUD_DEM_RAM_NICAM_THRSHLD__A, &thres_nicam);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_A2_THRSHLD__A, &thres_a2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_BTSC_THRSHLD__A, &thres_btsc, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_NICAM_THRSHLD__A, &thres_nicam, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        thres->a2 = thres_a2;
        thres->btsc = thres_btsc;
@@ -10698,7 +14674,7 @@ aud_ctrl_set_cfg_ass_thres(struct drx_demod_instance *demod, struct drx_cfg_aud_
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        if (thres == NULL) {
                return DRX_STS_INVALID_ARG;
        }
@@ -10708,13 +14684,29 @@ aud_ctrl_set_cfg_ass_thres(struct drx_demod_instance *demod, struct drx_cfg_aud_
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       WR16(dev_addr, AUD_DEM_WR_A2_THRSHLD__A, thres->a2);
-       WR16(dev_addr, AUD_DEM_WR_BTSC_THRSHLD__A, thres->btsc);
-       WR16(dev_addr, AUD_DEM_WR_NICAM_THRSHLD__A, thres->nicam);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_A2_THRSHLD__A, thres->a2, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_BTSC_THRSHLD__A, thres->btsc, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_NICAM_THRSHLD__A, thres->nicam, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* update DRXK data structure with hardware values */
        ext_attr->aud_data.ass_thresholds = *thres;
@@ -10736,7 +14728,7 @@ aud_ctrl_get_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 w_modus = 0;
 
        u16 dco_a_hi = 0;
@@ -10762,11 +14754,19 @@ aud_ctrl_get_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       CHK_ERROR(aud_get_modus(demod, &w_modus));
+       rc = aud_get_modus(demod, &w_modus);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Behaviour of primary audio channel */
        switch (w_modus & (AUD_DEM_WR_MODUS_MOD_CM_A__M)) {
@@ -10795,10 +14795,26 @@ aud_ctrl_get_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
        }
 
        /* frequency adjustment for primary & secondary audio channel */
-       RR16(dev_addr, AUD_DEM_RAM_DCO_A_HI__A, &dco_a_hi);
-       RR16(dev_addr, AUD_DEM_RAM_DCO_A_LO__A, &dco_a_lo);
-       RR16(dev_addr, AUD_DEM_RAM_DCO_B_HI__A, &dco_b_hi);
-       RR16(dev_addr, AUD_DEM_RAM_DCO_B_LO__A, &dco_b_lo);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_DCO_A_HI__A, &dco_a_hi, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_DCO_A_LO__A, &dco_a_lo, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_DCO_B_HI__A, &dco_b_hi, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_DCO_B_LO__A, &dco_b_lo, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        valA = (((u32) dco_a_hi) << 12) | ((u32) dco_a_lo & 0xFFF);
        valB = (((u32) dco_b_hi) << 12) | ((u32) dco_b_lo & 0xFFF);
@@ -10809,16 +14825,32 @@ aud_ctrl_get_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
 
        /* DC level of the incoming FM signal on the primary
           & seconday sound channel */
-       RR16(dev_addr, AUD_DSP_RD_FM_DC_LEVEL_A__A, &dc_lvl_a);
-       RR16(dev_addr, AUD_DSP_RD_FM_DC_LEVEL_B__A, &dc_lvl_b);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_RD_FM_DC_LEVEL_A__A, &dc_lvl_a, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_RD_FM_DC_LEVEL_B__A, &dc_lvl_b, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* offset (kHz) = (dcLvl / 322) */
        carriers->a.shift = (DRX_U16TODRXFREQ(dc_lvl_a) / 322L);
        carriers->b.shift = (DRX_U16TODRXFREQ(dc_lvl_b) / 322L);
 
        /* Carrier detetcion threshold for primary & secondary channel */
-       RR16(dev_addr, AUD_DEM_RAM_CM_A_THRSHLD__A, &cm_thes_a);
-       RR16(dev_addr, AUD_DEM_RAM_CM_B_THRSHLD__A, &cm_thes_b);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_CM_A_THRSHLD__A, &cm_thes_a, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RAM_CM_B_THRSHLD__A, &cm_thes_b, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        carriers->a.thres = cm_thes_a;
        carriers->b.thres = cm_thes_b;
@@ -10840,7 +14872,7 @@ aud_ctrl_set_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 w_modus = 0;
        u16 r_modus = 0;
 
@@ -10861,11 +14893,19 @@ aud_ctrl_set_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
-       CHK_ERROR(aud_get_modus(demod, &r_modus));
+       rc = aud_get_modus(demod, &r_modus);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        w_modus = r_modus;
        w_modus &= (u16) ~AUD_DEM_WR_MODUS_MOD_CM_A__M;
@@ -10898,7 +14938,11 @@ aud_ctrl_set_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
 
        /* now update the modus register */
        if (w_modus != r_modus) {
-               WR16(dev_addr, AUD_DEM_WR_MODUS__A, w_modus);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_MODUS__A, w_modus, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* frequency adjustment for primary & secondary audio channel */
@@ -10910,14 +14954,38 @@ aud_ctrl_set_cfg_carrier(struct drx_demod_instance *demod, struct drx_cfg_aud_ca
        dco_b_hi = (u16) ((valB >> 12) & 0xFFF);
        dco_b_lo = (u16) (valB & 0xFFF);
 
-       WR16(dev_addr, AUD_DEM_WR_DCO_A_HI__A, dco_a_hi);
-       WR16(dev_addr, AUD_DEM_WR_DCO_A_LO__A, dco_a_lo);
-       WR16(dev_addr, AUD_DEM_WR_DCO_B_HI__A, dco_b_hi);
-       WR16(dev_addr, AUD_DEM_WR_DCO_B_LO__A, dco_b_lo);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_DCO_A_HI__A, dco_a_hi, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_DCO_A_LO__A, dco_a_lo, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_DCO_B_HI__A, dco_b_hi, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_DCO_B_LO__A, dco_b_lo, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Carrier detetcion threshold for primary & secondary channel */
-       WR16(dev_addr, AUD_DEM_WR_CM_A_THRSHLD__A, carriers->a.thres);
-       WR16(dev_addr, AUD_DEM_WR_CM_B_THRSHLD__A, carriers->b.thres);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_CM_A_THRSHLD__A, carriers->a.thres, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_CM_B_THRSHLD__A, carriers->b.thres, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* update DRXK data structure */
        ext_attr->aud_data.carriers = *carriers;
@@ -10940,7 +15008,7 @@ aud_ctrl_get_cfg_mixer(struct drx_demod_instance *demod, struct drx_cfg_aud_mixe
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 src_i2s_matr = 0;
        u16 fm_matr = 0;
 
@@ -10953,12 +15021,20 @@ aud_ctrl_get_cfg_mixer(struct drx_demod_instance *demod, struct drx_cfg_aud_mixe
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        /* Source Selctor */
-       RR16(dev_addr, AUD_DSP_WR_SRC_I2S_MATR__A, &src_i2s_matr);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_SRC_I2S_MATR__A, &src_i2s_matr, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        switch (src_i2s_matr & AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S__M) {
        case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_MONO:
@@ -10996,7 +15072,11 @@ aud_ctrl_get_cfg_mixer(struct drx_demod_instance *demod, struct drx_cfg_aud_mixe
        }
 
        /* FM Matrix */
-       RR16(dev_addr, AUD_DEM_WR_FM_MATRIX__A, &fm_matr);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_WR_FM_MATRIX__A, &fm_matr, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        switch (fm_matr & AUD_DEM_WR_FM_MATRIX__M) {
        case AUD_DEM_WR_FM_MATRIX_NO_MATRIX:
                mixer->matrix_fm = DRX_AUD_FM_MATRIX_NO_MATRIX;
@@ -11035,7 +15115,7 @@ aud_ctrl_set_cfg_mixer(struct drx_demod_instance *demod, struct drx_cfg_aud_mixe
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 src_i2s_matr = 0;
        u16 fm_matr = 0;
 
@@ -11048,12 +15128,20 @@ aud_ctrl_set_cfg_mixer(struct drx_demod_instance *demod, struct drx_cfg_aud_mixe
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        /* Source Selctor */
-       RR16(dev_addr, AUD_DSP_WR_SRC_I2S_MATR__A, &src_i2s_matr);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_SRC_I2S_MATR__A, &src_i2s_matr, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        src_i2s_matr &= (u16) ~AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S__M;
 
        switch (mixer->source_i2s) {
@@ -11092,10 +15180,18 @@ aud_ctrl_set_cfg_mixer(struct drx_demod_instance *demod, struct drx_cfg_aud_mixe
                return DRX_STS_INVALID_ARG;
        }
        /* write the result */
-       WR16(dev_addr, AUD_DSP_WR_SRC_I2S_MATR__A, src_i2s_matr);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_SRC_I2S_MATR__A, src_i2s_matr, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* FM Matrix */
-       RR16(dev_addr, AUD_DEM_WR_FM_MATRIX__A, &fm_matr);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_WR_FM_MATRIX__A, &fm_matr, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        fm_matr &= (u16) ~AUD_DEM_WR_FM_MATRIX__M;
        switch (mixer->matrix_fm) {
        case DRX_AUD_FM_MATRIX_NO_MATRIX:
@@ -11119,7 +15215,11 @@ aud_ctrl_set_cfg_mixer(struct drx_demod_instance *demod, struct drx_cfg_aud_mixe
 
        /* Only write if ASS is off */
        if (ext_attr->aud_data.auto_sound == DRX_AUD_AUTO_SOUND_OFF) {
-               WR16(dev_addr, AUD_DEM_WR_FM_MATRIX__A, fm_matr);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_FM_MATRIX__A, fm_matr, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* update the data structure with hardware state */
@@ -11143,7 +15243,7 @@ aud_ctrl_set_cfg_av_sync(struct drx_demod_instance *demod, enum drx_cfg_aud_av_s
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 w_aud_vid_sync = 0;
 
        if (av_sync == NULL) {
@@ -11155,12 +15255,20 @@ aud_ctrl_set_cfg_av_sync(struct drx_demod_instance *demod, enum drx_cfg_aud_av_s
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        /* audio/video synchronisation */
-       RR16(dev_addr, AUD_DSP_WR_AV_SYNC__A, &w_aud_vid_sync);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_AV_SYNC__A, &w_aud_vid_sync, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        w_aud_vid_sync &= (u16) ~AUD_DSP_WR_AV_SYNC_AV_ON__M;
 
@@ -11189,7 +15297,11 @@ aud_ctrl_set_cfg_av_sync(struct drx_demod_instance *demod, enum drx_cfg_aud_av_s
                return DRX_STS_INVALID_ARG;
        }
 
-       WR16(dev_addr, AUD_DSP_WR_AV_SYNC__A, w_aud_vid_sync);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_AV_SYNC__A, w_aud_vid_sync, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        return DRX_STS_OK;
 rw_error:
        return DRX_STS_ERROR;
@@ -11208,7 +15320,7 @@ aud_ctrl_get_cfg_av_sync(struct drx_demod_instance *demod, enum drx_cfg_aud_av_s
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 w_aud_vid_sync = 0;
 
        if (av_sync == NULL) {
@@ -11220,12 +15332,20 @@ aud_ctrl_get_cfg_av_sync(struct drx_demod_instance *demod, enum drx_cfg_aud_av_s
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        /* audio/video synchronisation */
-       RR16(dev_addr, AUD_DSP_WR_AV_SYNC__A, &w_aud_vid_sync);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_AV_SYNC__A, &w_aud_vid_sync, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if ((w_aud_vid_sync & AUD_DSP_WR_AV_SYNC_AV_ON__M) ==
            AUD_DSP_WR_AV_SYNC_AV_ON_DISABLE) {
@@ -11263,11 +15383,16 @@ static int
 aud_ctrl_get_cfg_dev(struct drx_demod_instance *demod, enum drx_cfg_aud_deviation *dev)
 {
        u16 r_modus = 0;
+       int rc;
 
        if (dev == NULL)
                return DRX_STS_INVALID_ARG;
 
-       CHK_ERROR(aud_get_modus(demod, &r_modus));
+       rc = aud_get_modus(demod, &r_modus);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        switch (r_modus & AUD_DEM_WR_MODUS_MOD_HDEV_A__M) {
        case AUD_DEM_WR_MODUS_MOD_HDEV_A_NORMAL:
@@ -11297,7 +15422,7 @@ aud_ctrl_set_cfg_dev(struct drx_demod_instance *demod, enum drx_cfg_aud_deviatio
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 w_modus = 0;
        u16 r_modus = 0;
 
@@ -11308,7 +15433,11 @@ aud_ctrl_set_cfg_dev(struct drx_demod_instance *demod, enum drx_cfg_aud_deviatio
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
        dev_addr = demod->my_i2c_dev_addr;
 
-       CHK_ERROR(aud_get_modus(demod, &r_modus));
+       rc = aud_get_modus(demod, &r_modus);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        w_modus = r_modus;
 
@@ -11327,7 +15456,11 @@ aud_ctrl_set_cfg_dev(struct drx_demod_instance *demod, enum drx_cfg_aud_deviatio
 
        /* now update the modus register */
        if (w_modus != r_modus) {
-               WR16(dev_addr, AUD_DEM_WR_MODUS__A, w_modus);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_MODUS__A, w_modus, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
        /* store in drxk data struct */
        ext_attr->aud_data.deviation = *dev;
@@ -11349,7 +15482,7 @@ aud_ctrl_get_cfg_prescale(struct drx_demod_instance *demod, struct drx_cfg_aud_p
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 r_max_fm_deviation = 0;
        u16 r_nicam_prescaler = 0;
 
@@ -11362,13 +15495,25 @@ aud_ctrl_get_cfg_prescale(struct drx_demod_instance *demod, struct drx_cfg_aud_p
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        /* read register data */
-       RR16(dev_addr, AUD_DSP_WR_NICAM_PRESC__A, &r_nicam_prescaler);
-       RR16(dev_addr, AUD_DSP_WR_FM_PRESC__A, &r_max_fm_deviation);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_NICAM_PRESC__A, &r_nicam_prescaler, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DSP_WR_FM_PRESC__A, &r_max_fm_deviation, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* calculate max FM deviation */
        r_max_fm_deviation >>= AUD_DSP_WR_FM_PRESC_FM_AM_PRESC__B;
@@ -11423,7 +15568,7 @@ aud_ctrl_set_cfg_prescale(struct drx_demod_instance *demod, struct drx_cfg_aud_p
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 w_max_fm_deviation = 0;
        u16 nicam_prescaler;
 
@@ -11436,7 +15581,11 @@ aud_ctrl_set_cfg_prescale(struct drx_demod_instance *demod, struct drx_cfg_aud_p
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
@@ -11483,8 +15632,16 @@ aud_ctrl_set_cfg_prescale(struct drx_demod_instance *demod, struct drx_cfg_aud_p
        }
        /* end of setting NICAM Prescaler */
 
-       WR16(dev_addr, AUD_DSP_WR_NICAM_PRESC__A, nicam_prescaler);
-       WR16(dev_addr, AUD_DSP_WR_FM_PRESC__A, w_max_fm_deviation);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_NICAM_PRESC__A, nicam_prescaler, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_FM_PRESC__A, w_max_fm_deviation, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        ext_attr->aud_data.prescale = *presc;
 
@@ -11504,7 +15661,7 @@ static int aud_ctrl_beep(struct drx_demod_instance *demod, struct drx_aud_beep *
 {
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
-
+       int rc;
        u16 the_beep = 0;
        u16 volume = 0;
        u32 frequency = 0;
@@ -11518,7 +15675,11 @@ static int aud_ctrl_beep(struct drx_demod_instance *demod, struct drx_aud_beep *
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
@@ -11543,7 +15704,11 @@ static int aud_ctrl_beep(struct drx_demod_instance *demod, struct drx_aud_beep *
                the_beep = 0;
        }
 
-       WR16(dev_addr, AUD_DSP_WR_BEEPER__A, the_beep);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_BEEPER__A, the_beep, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return DRX_STS_OK;
 rw_error:
@@ -11563,7 +15728,7 @@ aud_ctrl_set_standard(struct drx_demod_instance *demod, enum drx_aud_standard *s
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
        enum drx_standard current_standard = DRX_STANDARD_UNKNOWN;
-
+       int rc;
        u16 w_standard = 0;
        u16 w_modus = 0;
        u16 r_modus = 0;
@@ -11581,7 +15746,11 @@ aud_ctrl_set_standard(struct drx_demod_instance *demod, enum drx_aud_standard *s
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, false));
+               rc = power_up_aud(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
@@ -11594,19 +15763,54 @@ aud_ctrl_set_standard(struct drx_demod_instance *demod, enum drx_aud_standard *s
 
        ext_attr->aud_data.volume.mute = true;
        /* restore data structure from DRX ExtAttr, call volume first to mute */
-       CHK_ERROR(aud_ctrl_set_cfg_volume(demod, &ext_attr->aud_data.volume));
-       CHK_ERROR(aud_ctrl_set_cfg_carrier(demod, &ext_attr->aud_data.carriers));
-       CHK_ERROR(aud_ctrl_set_cfg_ass_thres
-                 (demod, &ext_attr->aud_data.ass_thresholds));
-       CHK_ERROR(aud_ctr_setl_cfg_auto_sound(demod, &ext_attr->aud_data.auto_sound));
-       CHK_ERROR(aud_ctrl_set_cfg_mixer(demod, &ext_attr->aud_data.mixer));
-       CHK_ERROR(aud_ctrl_set_cfg_av_sync(demod, &ext_attr->aud_data.av_sync));
-       CHK_ERROR(aud_ctrl_set_cfg_output_i2s(demod, &ext_attr->aud_data.i2sdata));
+       rc = aud_ctrl_set_cfg_volume(demod, &ext_attr->aud_data.volume);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = aud_ctrl_set_cfg_carrier(demod, &ext_attr->aud_data.carriers);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = aud_ctrl_set_cfg_ass_thres(demod, &ext_attr->aud_data.ass_thresholds);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = aud_ctr_setl_cfg_auto_sound(demod, &ext_attr->aud_data.auto_sound);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = aud_ctrl_set_cfg_mixer(demod, &ext_attr->aud_data.mixer);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = aud_ctrl_set_cfg_av_sync(demod, &ext_attr->aud_data.av_sync);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = aud_ctrl_set_cfg_output_i2s(demod, &ext_attr->aud_data.i2sdata);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* get prescaler from presets */
-       CHK_ERROR(aud_ctrl_set_cfg_prescale(demod, &ext_attr->aud_data.prescale));
+       rc = aud_ctrl_set_cfg_prescale(demod, &ext_attr->aud_data.prescale);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       CHK_ERROR(aud_get_modus(demod, &r_modus));
+       rc = aud_get_modus(demod, &r_modus);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        w_modus = r_modus;
 
@@ -11702,10 +15906,18 @@ aud_ctrl_set_standard(struct drx_demod_instance *demod, enum drx_aud_standard *s
        }
 
        if (w_modus != r_modus) {
-               WR16(dev_addr, AUD_DEM_WR_MODUS__A, w_modus);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_MODUS__A, w_modus, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
-       WR16(dev_addr, AUD_DEM_WR_STANDARD_SEL__A, w_standard);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DEM_WR_STANDARD_SEL__A, w_standard, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
    /**************************************************************************/
        /* NOT calling aud_ctrl_set_cfg_volume to avoid interfering standard          */
@@ -11716,7 +15928,11 @@ aud_ctrl_set_standard(struct drx_demod_instance *demod, enum drx_aud_standard *s
        if (ext_attr->aud_data.volume.mute == false) {
                w_volume |= (u16) ((volume_buffer + AUD_VOLUME_ZERO_DB) <<
                                    AUD_DSP_WR_VOLUME_VOL_MAIN__B);
-               WR16(dev_addr, AUD_DSP_WR_VOLUME__A, w_volume);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, AUD_DSP_WR_VOLUME__A, w_volume, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* write standard selected */
@@ -11739,7 +15955,7 @@ aud_ctrl_get_standard(struct drx_demod_instance *demod, enum drx_aud_standard *s
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
-
+       int rc;
        u16 r_data = 0;
 
        if (standard == NULL) {
@@ -11751,13 +15967,21 @@ aud_ctrl_get_standard(struct drx_demod_instance *demod, enum drx_aud_standard *s
 
        /* power up */
        if (ext_attr->aud_data.audio_is_active == false) {
-               CHK_ERROR(power_up_aud(demod, true));
+               rc = power_up_aud(demod, true);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                ext_attr->aud_data.audio_is_active = true;
        }
 
        *standard = DRX_AUD_STANDARD_UNKNOWN;
 
-       RR16(dev_addr, AUD_DEM_RD_STANDARD_RES__A, &r_data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, AUD_DEM_RD_STANDARD_RES__A, &r_data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* return OK if the detection is not ready yet */
        if (r_data >= AUD_DEM_RD_STANDARD_RES_STD_RESULT_DETECTION_STILL_ACTIVE) {
@@ -11845,9 +16069,14 @@ static int
 fm_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_stat)
 {
        struct drx_aud_status status;
+       int rc;
 
        /* Check detection of audio carriers */
-       CHK_ERROR(aud_ctrl_get_carrier_detect_status(demod, &status));
+       rc = aud_ctrl_get_carrier_detect_status(demod, &status);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* locked if either primary or secondary carrier is detected */
        if ((status.carrier_a == true) || (status.carrier_b == true)) {
@@ -11877,8 +16106,13 @@ static int
 fm_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_quality)
 {
        enum drx_lock_status lock_status = DRX_NOT_LOCKED;
+       int rc;
 
-       CHK_ERROR(fm_lock_status(demod, &lock_status));
+       rc = fm_lock_status(demod, &lock_status);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (lock_status == DRX_LOCKED) {
                sig_quality->indicator = 100;
        } else {
@@ -11918,6 +16152,7 @@ get_oob_lock_status(struct drx_demod_instance *demod,
                    struct i2c_device_addr *dev_addr, enum drx_lock_status *oob_lock)
 {
        struct drxjscu_cmd scu_cmd;
+       int rc;
        u16 cmd_result[2];
        u16 oob_lock_state;
 
@@ -11929,7 +16164,11 @@ get_oob_lock_status(struct drx_demod_instance *demod,
        scu_cmd.result = cmd_result;
        scu_cmd.parameter_len = 0;
 
-       CHK_ERROR(scu_command(dev_addr, &scu_cmd));
+       rc = scu_command(dev_addr, &scu_cmd);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (scu_cmd.result[1] < 0x4000) {
                /* 0x00 NOT LOCKED */
@@ -11982,6 +16221,7 @@ get_oob_symbol_rate_offset(struct i2c_device_addr *dev_addr, s32 *symbol_rate_of
 /*  trim 12656250/15625 = 810 */
 /*  offset = -{(timing_offset*(symbol_rate * 2^-5))/(2^8*810)} [ppm]  */
 /*  offset = -[(symbol_rate * 2^-5)*(timing_offset)/(2^8)]/810 [ppm]  */
+       int rc;
        s32 timing_offset = 0;
        u32 unsigned_timing_offset = 0;
        s32 division_factor = 810;
@@ -11991,7 +16231,11 @@ get_oob_symbol_rate_offset(struct i2c_device_addr *dev_addr, s32 *symbol_rate_of
 
        *symbol_rate_offset = 0;
        /* read data rate */
-       SARR16(dev_addr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &data);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
        switch (data & SCU_RAM_ORX_RF_RX_DATA_RATE__M) {
        case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC:
        case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC:
@@ -12011,7 +16255,11 @@ get_oob_symbol_rate_offset(struct i2c_device_addr *dev_addr, s32 *symbol_rate_of
                return (DRX_STS_ERROR);
        }
 
-       RR16(dev_addr, ORX_CON_CTI_DTI_R__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_CON_CTI_DTI_R__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
        /* convert data to positive and keep information about sign */
        if ((data & 0x8000) == 0x8000) {
                if (data == 0x8000)
@@ -12052,6 +16300,9 @@ rw_error:
 static int
 get_oob_freq_offset(struct drx_demod_instance *demod, s32 *freq_offset)
 {
+       struct drx_common_attr *common_attr = (struct drx_common_attr *) (NULL);
+       struct i2c_device_addr *dev_addr = NULL;
+       int rc;
        u16 data = 0;
        u16 rot = 0;
        u16 symbol_rateReg = 0;
@@ -12063,8 +16314,6 @@ get_oob_freq_offset(struct drx_demod_instance *demod, s32 *freq_offset)
        u32 data64hi = 0;
        u32 data64lo = 0;
        u32 temp_freq_offset = 0;
-       struct drx_common_attr *common_attr = (struct drx_common_attr *) (NULL);
-       struct i2c_device_addr *dev_addr = NULL;
 
        /* check arguments */
        if ((demod == NULL) || (freq_offset == NULL)) {
@@ -12077,10 +16326,18 @@ get_oob_freq_offset(struct drx_demod_instance *demod, s32 *freq_offset)
        *freq_offset = 0;
 
        /* read sign (spectrum inversion) */
-       RR16(dev_addr, ORX_FWP_IQM_FRQ_W__A, &rot);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_FWP_IQM_FRQ_W__A, &rot, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* read frequency offset */
-       SARR16(dev_addr, SCU_RAM_ORX_FRQ_OFFSET__A, &data);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ORX_FRQ_OFFSET__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* find COARSE frequency offset */
        /* coarse_freq_offset = ( 25312500Hz*FRQ_OFFSET >> 21 ); */
        if (data & 0x8000) {
@@ -12094,7 +16351,11 @@ get_oob_freq_offset(struct drx_demod_instance *demod, s32 *freq_offset)
        /* get value in KHz */
        coarse_freq_offset = coarse_sign * frac(temp_freq_offset, 1000, FRAC_ROUND);    /* KHz */
        /* read data rate */
-       SARR16(dev_addr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &symbol_rateReg);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &symbol_rateReg, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        switch (symbol_rateReg & SCU_RAM_ORX_RF_RX_DATA_RATE__M) {
        case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC:
        case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC:
@@ -12116,7 +16377,11 @@ get_oob_freq_offset(struct drx_demod_instance *demod, s32 *freq_offset)
 
        /* find FINE frequency offset */
        /* fine_freq_offset = ( (CORRECTION_VALUE*symbol_rate) >> 18 ); */
-       RR16(dev_addr, ORX_CON_CPH_FRQ_R__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_CON_CPH_FRQ_R__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* at least 5 MSB are 0 so first divide with 2^5 without information loss */
        fine_freq_offset = (symbol_rate >> 5);
        if (data & 0x8000) {
@@ -12153,20 +16418,29 @@ rw_error:
 static int
 get_oob_frequency(struct drx_demod_instance *demod, s32 *frequency)
 {
+       struct i2c_device_addr *dev_addr = NULL;
+       int rc;
        u16 data = 0;
        s32 freq_offset = 0;
        s32 freq = 0;
-       struct i2c_device_addr *dev_addr = NULL;
 
        dev_addr = demod->my_i2c_dev_addr;
 
        *frequency = 0;         /* KHz */
 
-       SARR16(dev_addr, SCU_RAM_ORX_RF_RX_FREQUENCY_VALUE__A, &data);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ORX_RF_RX_FREQUENCY_VALUE__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        freq = (s32) ((s32) data * 50 + 50000L);
 
-       CHK_ERROR(get_oob_freq_offset(demod, &freq_offset));
+       rc = get_oob_freq_offset(demod, &freq_offset);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        *frequency = freq + freq_offset;
 
@@ -12187,11 +16461,16 @@ rw_error:
 */
 static int get_oobmer(struct i2c_device_addr *dev_addr, u32 *mer)
 {
+       int rc;
        u16 data = 0;
 
        *mer = 0;
        /* READ MER */
-       RR16(dev_addr, ORX_EQU_MER_MER_R__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_EQU_MER_MER_R__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        switch (data) {
        case 0:         /* fall through */
        case 1:
@@ -12328,11 +16607,16 @@ rw_error:
 */
 static int set_orx_nsu_aox(struct drx_demod_instance *demod, bool active)
 {
-       u16 data = 0;
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
+       int rc;
+       u16 data = 0;
 
        /* Configure NSU_AOX */
-       RR16(dev_addr, ORX_NSU_AOX_STDBY_W__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_NSU_AOX_STDBY_W__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (!active) {
                data &= ((~ORX_NSU_AOX_STDBY_W_STDBYADC_A2_ON)
                         & (~ORX_NSU_AOX_STDBY_W_STDBYAMP_A2_ON)
@@ -12354,7 +16638,11 @@ static int set_orx_nsu_aox(struct drx_demod_instance *demod, bool active)
                         | ORX_NSU_AOX_STDBY_W_STDBYTAGC_RF_A2_ON
                         | ORX_NSU_AOX_STDBY_W_STDBYFLT_A2_ON);
        }
-       WR16(dev_addr, ORX_NSU_AOX_STDBY_W__A, data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_NSU_AOX_STDBY_W__A, data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -12388,6 +16676,7 @@ rw_error:
 static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_param)
 {
 #ifndef DRXJ_DIGITAL_ONLY
+       int rc;
        s32 freq = 0;   /* KHz */
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
@@ -12424,9 +16713,21 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
                scu_cmd.parameter_len = 0;
                scu_cmd.result_len = 1;
                scu_cmd.result = cmd_result;
-               CHK_ERROR(scu_command(dev_addr, &scu_cmd));
-               CHK_ERROR(set_orx_nsu_aox(demod, false));
-               WR16(dev_addr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP);
+               rc = scu_command(dev_addr, &scu_cmd);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_orx_nsu_aox(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
 
                ext_attr->oob_power_on = false;
                return (DRX_STS_OK);
@@ -12454,13 +16755,21 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
    /*********/
        /* Stop  */
    /*********/
-       WR16(dev_addr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
        scu_cmd.command = SCU_RAM_COMMAND_STANDARD_OOB
            | SCU_RAM_COMMAND_CMD_DEMOD_STOP;
        scu_cmd.parameter_len = 0;
        scu_cmd.result_len = 1;
        scu_cmd.result = cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &scu_cmd));
+       rc = scu_command(dev_addr, &scu_cmd);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
    /*********/
        /* Reset */
    /*********/
@@ -12469,7 +16778,11 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
        scu_cmd.parameter_len = 0;
        scu_cmd.result_len = 1;
        scu_cmd.result = cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &scu_cmd));
+       rc = scu_command(dev_addr, &scu_cmd);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
    /***********/
        /* SET_ENV */
    /***********/
@@ -12541,94 +16854,294 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
        scu_cmd.result_len = 1;
        scu_cmd.result = cmd_result;
        mode_index = mode_val[(set_param_parameters[0] & 0xC0) >> 6];
-       CHK_ERROR(scu_command(dev_addr, &scu_cmd));
-
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA);    /*  Write magic word to enable pdr reg write  */
-       WR16(dev_addr, SIO_PDR_OOB_CRX_CFG__A,
-            OOB_CRX_DRIVE_STRENGTH << SIO_PDR_OOB_CRX_CFG_DRIVE__B
-            | 0x03 << SIO_PDR_OOB_CRX_CFG_MODE__B);
-       WR16(dev_addr, SIO_PDR_OOB_DRX_CFG__A,
-            OOB_DRX_DRIVE_STRENGTH << SIO_PDR_OOB_DRX_CFG_DRIVE__B
-            | 0x03 << SIO_PDR_OOB_DRX_CFG_MODE__B);
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000);    /*  Write magic word to disable pdr reg write */
-
-       WR16(dev_addr, ORX_TOP_COMM_KEY__A, 0);
-       WR16(dev_addr, ORX_FWP_AAG_LEN_W__A, 16000);
-       WR16(dev_addr, ORX_FWP_AAG_THR_W__A, 40);
+       rc = scu_command(dev_addr, &scu_cmd);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }       /*  Write magic word to enable pdr reg write  */
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_OOB_CRX_CFG__A, OOB_CRX_DRIVE_STRENGTH << SIO_PDR_OOB_CRX_CFG_DRIVE__B | 0x03 << SIO_PDR_OOB_CRX_CFG_MODE__B, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_PDR_OOB_DRX_CFG__A, OOB_DRX_DRIVE_STRENGTH << SIO_PDR_OOB_DRX_CFG_DRIVE__B | 0x03 << SIO_PDR_OOB_DRX_CFG_MODE__B, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0x0000, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }       /*  Write magic word to disable pdr reg write */
+
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_TOP_COMM_KEY__A, 0, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_FWP_AAG_LEN_W__A, 16000, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_FWP_AAG_THR_W__A, 40, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* ddc */
-       WR16(dev_addr, ORX_DDC_OFO_SET_W__A, ORX_DDC_OFO_SET_W__PRE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_DDC_OFO_SET_W__A, ORX_DDC_OFO_SET_W__PRE, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* nsu */
-       WR16(dev_addr, ORX_NSU_AOX_LOPOW_W__A, ext_attr->oob_lo_pow);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_NSU_AOX_LOPOW_W__A, ext_attr->oob_lo_pow, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* initialization for target mode */
-       WR16(dev_addr, SCU_RAM_ORX_TARGET_MODE__A,
-            SCU_RAM_ORX_TARGET_MODE_2048KBPS_SQRT);
-       WR16(dev_addr, SCU_RAM_ORX_FREQ_GAIN_CORR__A,
-            SCU_RAM_ORX_FREQ_GAIN_CORR_2048KBPS);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_TARGET_MODE__A, SCU_RAM_ORX_TARGET_MODE_2048KBPS_SQRT, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_FREQ_GAIN_CORR__A, SCU_RAM_ORX_FREQ_GAIN_CORR_2048KBPS, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* Reset bits for timing and freq. recovery */
-       WR16(dev_addr, SCU_RAM_ORX_RST_CPH__A, 0x0001);
-       WR16(dev_addr, SCU_RAM_ORX_RST_CTI__A, 0x0002);
-       WR16(dev_addr, SCU_RAM_ORX_RST_KRN__A, 0x0004);
-       WR16(dev_addr, SCU_RAM_ORX_RST_KRP__A, 0x0008);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_RST_CPH__A, 0x0001, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_RST_CTI__A, 0x0002, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_RST_KRN__A, 0x0004, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_RST_KRP__A, 0x0008, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* AGN_LOCK = {2048>>3, -2048, 8, -8, 0, 1}; */
-       WR16(dev_addr, SCU_RAM_ORX_AGN_LOCK_TH__A, 2048 >> 3);
-       WR16(dev_addr, SCU_RAM_ORX_AGN_LOCK_TOTH__A, (u16) (-2048));
-       WR16(dev_addr, SCU_RAM_ORX_AGN_ONLOCK_TTH__A, 8);
-       WR16(dev_addr, SCU_RAM_ORX_AGN_UNLOCK_TTH__A, (u16) (-8));
-       WR16(dev_addr, SCU_RAM_ORX_AGN_LOCK_MASK__A, 1);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_AGN_LOCK_TH__A, 2048 >> 3, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_AGN_LOCK_TOTH__A, (u16)(-2048), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_AGN_ONLOCK_TTH__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_AGN_UNLOCK_TTH__A, (u16)(-8), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_AGN_LOCK_MASK__A, 1, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* DGN_LOCK = {10, -2048, 8, -8, 0, 1<<1}; */
-       WR16(dev_addr, SCU_RAM_ORX_DGN_LOCK_TH__A, 10);
-       WR16(dev_addr, SCU_RAM_ORX_DGN_LOCK_TOTH__A, (u16) (-2048));
-       WR16(dev_addr, SCU_RAM_ORX_DGN_ONLOCK_TTH__A, 8);
-       WR16(dev_addr, SCU_RAM_ORX_DGN_UNLOCK_TTH__A, (u16) (-8));
-       WR16(dev_addr, SCU_RAM_ORX_DGN_LOCK_MASK__A, 1 << 1);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_DGN_LOCK_TH__A, 10, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_DGN_LOCK_TOTH__A, (u16)(-2048), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_DGN_ONLOCK_TTH__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_DGN_UNLOCK_TTH__A, (u16)(-8), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_DGN_LOCK_MASK__A, 1 << 1, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* FRQ_LOCK = {15,-2048, 8, -8, 0, 1<<2}; */
-       WR16(dev_addr, SCU_RAM_ORX_FRQ_LOCK_TH__A, 17);
-       WR16(dev_addr, SCU_RAM_ORX_FRQ_LOCK_TOTH__A, (u16) (-2048));
-       WR16(dev_addr, SCU_RAM_ORX_FRQ_ONLOCK_TTH__A, 8);
-       WR16(dev_addr, SCU_RAM_ORX_FRQ_UNLOCK_TTH__A, (u16) (-8));
-       WR16(dev_addr, SCU_RAM_ORX_FRQ_LOCK_MASK__A, 1 << 2);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_FRQ_LOCK_TH__A, 17, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_FRQ_LOCK_TOTH__A, (u16)(-2048), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_FRQ_ONLOCK_TTH__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_FRQ_UNLOCK_TTH__A, (u16)(-8), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_FRQ_LOCK_MASK__A, 1 << 2, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* PHA_LOCK = {5000, -2048, 8, -8, 0, 1<<3}; */
-       WR16(dev_addr, SCU_RAM_ORX_PHA_LOCK_TH__A, 3000);
-       WR16(dev_addr, SCU_RAM_ORX_PHA_LOCK_TOTH__A, (u16) (-2048));
-       WR16(dev_addr, SCU_RAM_ORX_PHA_ONLOCK_TTH__A, 8);
-       WR16(dev_addr, SCU_RAM_ORX_PHA_UNLOCK_TTH__A, (u16) (-8));
-       WR16(dev_addr, SCU_RAM_ORX_PHA_LOCK_MASK__A, 1 << 3);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_PHA_LOCK_TH__A, 3000, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_PHA_LOCK_TOTH__A, (u16)(-2048), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_PHA_ONLOCK_TTH__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_PHA_UNLOCK_TTH__A, (u16)(-8), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_PHA_LOCK_MASK__A, 1 << 3, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* TIM_LOCK = {300,      -2048, 8, -8, 0, 1<<4}; */
-       WR16(dev_addr, SCU_RAM_ORX_TIM_LOCK_TH__A, 400);
-       WR16(dev_addr, SCU_RAM_ORX_TIM_LOCK_TOTH__A, (u16) (-2048));
-       WR16(dev_addr, SCU_RAM_ORX_TIM_ONLOCK_TTH__A, 8);
-       WR16(dev_addr, SCU_RAM_ORX_TIM_UNLOCK_TTH__A, (u16) (-8));
-       WR16(dev_addr, SCU_RAM_ORX_TIM_LOCK_MASK__A, 1 << 4);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_TIM_LOCK_TH__A, 400, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_TIM_LOCK_TOTH__A, (u16)(-2048), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_TIM_ONLOCK_TTH__A, 8, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_TIM_UNLOCK_TTH__A, (u16)(-8), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_TIM_LOCK_MASK__A, 1 << 4, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* EQU_LOCK = {20,      -2048, 8, -8, 0, 1<<5}; */
-       WR16(dev_addr, SCU_RAM_ORX_EQU_LOCK_TH__A, 20);
-       WR16(dev_addr, SCU_RAM_ORX_EQU_LOCK_TOTH__A, (u16) (-2048));
-       WR16(dev_addr, SCU_RAM_ORX_EQU_ONLOCK_TTH__A, 4);
-       WR16(dev_addr, SCU_RAM_ORX_EQU_UNLOCK_TTH__A, (u16) (-4));
-       WR16(dev_addr, SCU_RAM_ORX_EQU_LOCK_MASK__A, 1 << 5);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_EQU_LOCK_TH__A, 20, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_EQU_LOCK_TOTH__A, (u16)(-2048), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_EQU_ONLOCK_TTH__A, 4, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_EQU_UNLOCK_TTH__A, (u16)(-4), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_ORX_EQU_LOCK_MASK__A, 1 << 5, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* PRE-Filter coefficients (PFI) */
-       WRB(dev_addr, ORX_FWP_PFI_A_W__A, sizeof(pfi_coeffs[mode_index]),
-           ((u8 *)pfi_coeffs[mode_index]));
-       WR16(dev_addr, ORX_TOP_MDE_W__A, mode_index);
+       rc = DRXJ_DAP.write_block_func(dev_addr, ORX_FWP_PFI_A_W__A, sizeof(pfi_coeffs[mode_index]), ((u8 *)pfi_coeffs[mode_index]), 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_TOP_MDE_W__A, mode_index, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        /* NYQUIST-Filter coefficients (NYQ) */
        for (i = 0; i < (NYQFILTERLEN + 1) / 2; i++) {
-               WR16(dev_addr, ORX_FWP_NYQ_ADR_W__A, i);
-               WR16(dev_addr, ORX_FWP_NYQ_COF_RW__A,
-                    nyquist_coeffs[mode_index][i]);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_FWP_NYQ_ADR_W__A, i, 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+               rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_FWP_NYQ_COF_RW__A, nyquist_coeffs[mode_index][i], 0);
+               if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+               }
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_FWP_NYQ_ADR_W__A, 31, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
        }
-       WR16(dev_addr, ORX_FWP_NYQ_ADR_W__A, 31);
-       WR16(dev_addr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_ACTIVE);
    /*********/
        /* Start */
    /*********/
@@ -12637,10 +17150,22 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
        scu_cmd.parameter_len = 0;
        scu_cmd.result_len = 1;
        scu_cmd.result = cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &scu_cmd));
+       rc = scu_command(dev_addr, &scu_cmd);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       CHK_ERROR(set_orx_nsu_aox(demod, true));
-       WR16(dev_addr, ORX_NSU_AOX_STHR_W__A, ext_attr->oob_pre_saw);
+       rc = set_orx_nsu_aox(demod, true);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_NSU_AOX_STHR_W__A, ext_attr->oob_pre_saw, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
        ext_attr->oob_power_on = true;
 
@@ -12661,6 +17186,7 @@ static int
 ctrl_get_oob(struct drx_demod_instance *demod, struct drxoob_status *oob_status)
 {
 #ifndef DRXJ_DIGITAL_ONLY
+       int rc;
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
        u16 data = 0;
@@ -12676,17 +17202,52 @@ ctrl_get_oob(struct drx_demod_instance *demod, struct drxoob_status *oob_status)
        if (ext_attr->oob_power_on == false)
                return (DRX_STS_ERROR);
 
-       RR16(dev_addr, ORX_DDC_OFO_SET_W__A, &data);
-       RR16(dev_addr, ORX_NSU_TUN_RFGAIN_W__A, &data);
-       RR16(dev_addr, ORX_FWP_AAG_THR_W__A, &data);
-       SARR16(dev_addr, SCU_RAM_ORX_DGN_KI__A, &data);
-       RR16(dev_addr, ORX_FWP_SRC_DGN_W__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_DDC_OFO_SET_W__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_NSU_TUN_RFGAIN_W__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_FWP_AAG_THR_W__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ORX_DGN_KI__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_FWP_SRC_DGN_W__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+       pr_err("error %d\n", rc);
+       goto rw_error;
+       }
 
-       CHK_ERROR(get_oob_lock_status(demod, dev_addr, &oob_status->lock));
-       CHK_ERROR(get_oob_frequency(demod, &oob_status->frequency));
-       CHK_ERROR(get_oobmer(dev_addr, &oob_status->mer));
-       CHK_ERROR(get_oob_symbol_rate_offset
-                 (dev_addr, &oob_status->symbol_rate_offset));
+       rc = get_oob_lock_status(demod, dev_addr, &oob_status->lock);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = get_oob_frequency(demod, &oob_status->frequency);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = get_oobmer(dev_addr, &oob_status->mer);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = get_oob_symbol_rate_offset(dev_addr, &oob_status->symbol_rate_offset);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -12706,6 +17267,7 @@ ctrl_set_cfg_oob_pre_saw(struct drx_demod_instance *demod, u16 *cfg_data)
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        if (cfg_data == NULL) {
                return (DRX_STS_INVALID_ARG);
@@ -12713,7 +17275,11 @@ ctrl_set_cfg_oob_pre_saw(struct drx_demod_instance *demod, u16 *cfg_data)
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
-       WR16(dev_addr, ORX_NSU_AOX_STHR_W__A, *cfg_data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_NSU_AOX_STHR_W__A, *cfg_data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->oob_pre_saw = *cfg_data;
        return (DRX_STS_OK);
 rw_error:
@@ -12755,6 +17321,7 @@ ctrl_set_cfg_oob_lo_power(struct drx_demod_instance *demod, enum drxj_cfg_oob_lo
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        if (cfg_data == NULL) {
                return (DRX_STS_INVALID_ARG);
@@ -12762,7 +17329,11 @@ ctrl_set_cfg_oob_lo_power(struct drx_demod_instance *demod, enum drxj_cfg_oob_lo
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
-       WR16(dev_addr, ORX_NSU_AOX_LOPOW_W__A, *cfg_data);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ORX_NSU_AOX_LOPOW_W__A, *cfg_data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        ext_attr->oob_lo_pow = *cfg_data;
        return (DRX_STS_OK);
 rw_error:
@@ -12816,7 +17387,7 @@ ctrl_get_cfg_oob_lo_power(struct drx_demod_instance *demod, enum drxj_cfg_oob_lo
 static int
 ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
 {
-
+       int rc;
        s32 tuner_set_freq = 0;
        s32 tuner_get_freq = 0;
        s32 tuner_freq_offset = 0;
@@ -12927,7 +17498,11 @@ ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                min_symbol_rate = DRXJ_QAM_SYMBOLRATE_MIN;
                max_symbol_rate = DRXJ_QAM_SYMBOLRATE_MAX;
                /* config SMA_TX pin to SAW switch mode */
-               CHK_ERROR(ctrl_set_uio_cfg(demod, &uio_cfg));
+               rc = ctrl_set_uio_cfg(demod, &uio_cfg);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                if (channel->symbolrate < min_symbol_rate ||
                    channel->symbolrate > max_symbol_rate) {
@@ -13019,10 +17594,18 @@ ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                        return (DRX_STS_INVALID_ARG);
                }
 
-               CHK_ERROR(ctrl_uio_write(demod, &uio1));
+               rc = ctrl_uio_write(demod, &uio1);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 #endif /* DRXJ_VSB_ONLY */
-       WR16(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
    /*== Tune, fast mode ======================================================*/
        if (demod->my_tuner != NULL) {
                /* Determine tuner mode and freq to tune to ... */
@@ -13089,23 +17672,35 @@ ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                if (common_attr->tuner_port_nr == 1) {
                        /* close tuner bridge */
                        bridge_closed = true;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        /* set tuner frequency */
                }
 
-               CHK_ERROR(drxbsp_tuner_set_frequency(demod->my_tuner,
-                                                    tuner_mode, tuner_set_freq));
+               rc = drxbsp_tuner_set_frequency(demod->my_tuner, tuner_mode, tuner_set_freq);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (common_attr->tuner_port_nr == 1) {
                        /* open tuner bridge */
                        bridge_closed = false;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
 
                /* Get actual frequency set by tuner and compute offset */
-               CHK_ERROR(drxbsp_tuner_get_frequency(demod->my_tuner,
-                                                    0,
-                                                   &tuner_get_freq,
-                                                   &intermediate_freq));
+               rc = drxbsp_tuner_get_frequency(demod->my_tuner, 0, &tuner_get_freq, &intermediate_freq);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                tuner_freq_offset = tuner_get_freq - tuner_set_freq;
                common_attr->intermediate_freq = intermediate_freq;
        } else {
@@ -13122,8 +17717,16 @@ ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                } else {
                        ext_attr->mirror = channel->mirror;
                }
-               CHK_ERROR(set_vsb(demod));
-               CHK_ERROR(set_frequency(demod, channel, tuner_freq_offset));
+               rc = set_vsb(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = set_frequency(demod, channel, tuner_freq_offset);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #ifndef DRXJ_DIGITAL_ONLY
        case DRX_STANDARD_NTSC: /* fallthrough */
@@ -13138,15 +17741,22 @@ ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                } else {
                        ext_attr->mirror = channel->mirror;
                }
-               CHK_ERROR(set_atv_channel(demod,
-                                         tuner_freq_offset, channel, standard));
+               rc = set_atv_channel(demod, tuner_freq_offset, channel, standard);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
 #ifndef DRXJ_VSB_ONLY
        case DRX_STANDARD_ITU_A:        /* fallthrough */
        case DRX_STANDARD_ITU_B:        /* fallthrough */
        case DRX_STANDARD_ITU_C:
-               CHK_ERROR(set_qamChannel(demod, channel, tuner_freq_offset));
+               rc = set_qamChannel(demod, channel, tuner_freq_offset);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        case DRX_STANDARD_UNKNOWN:
@@ -13163,16 +17773,27 @@ ctrl_set_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                if (common_attr->tuner_port_nr == 1) {
                        /* close tuner bridge */
                        bridge_closed = true;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
 
                /* set tuner frequency */
-               CHK_ERROR(drxbsp_tuner_set_frequency(demod->my_tuner,
-                                                    tuner_mode, tuner_set_freq));
+               rc = drxbsp_tuner_set_frequency(demod->my_tuner, tuner_mode, tuner_set_freq);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (common_attr->tuner_port_nr == 1) {
                        /* open tuner bridge */
                        bridge_closed = false;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
        }
 
@@ -13200,6 +17821,7 @@ ctrl_get_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
        enum drx_lock_status lock_status = DRX_NOT_LOCKED;
        enum drx_standard standard = DRX_STANDARD_UNKNOWN;
        struct drx_common_attr *common_attr = NULL;
@@ -13244,10 +17866,11 @@ ctrl_get_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                bool tuner_mirror = common_attr->mirror_freq_spect ? false : true;
 
                /* Get frequency from tuner */
-               CHK_ERROR(drxbsp_tuner_get_frequency(demod->my_tuner,
-                                                    0,
-                                                   &(channel->frequency),
-                                                   &intermediate_freq));
+               rc = drxbsp_tuner_get_frequency(demod->my_tuner, 0, &(channel->frequency), &intermediate_freq);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                tuner_freq_offset = channel->frequency - ext_attr->frequency;
                if (tuner_mirror == true) {
                        /* positive image */
@@ -13266,9 +17889,17 @@ ctrl_get_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
        }
 
        /* check lock status */
-       CHK_ERROR(ctrl_lock_status(demod, &lock_status));
+       rc = ctrl_lock_status(demod, &lock_status);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if ((lock_status == DRX_LOCKED) || (lock_status == DRXJ_DEMOD_LOCK)) {
-               ARR32(dev_addr, IQM_RC_RATE_LO__A, &iqm_rc_rateLo);
+               rc = drxj_dap_atomic_read_reg32(dev_addr, IQM_RC_RATE_LO__A, &iqm_rc_rateLo, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                adc_frequency = (common_attr->sys_clock_freq * 1000) / 3;
 
                channel->symbolrate =
@@ -13278,7 +17909,11 @@ ctrl_get_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                case DRX_STANDARD_8VSB:
                        channel->bandwidth = DRX_BANDWIDTH_6MHZ;
                        /* get the channel frequency */
-                       CHK_ERROR(get_ctl_freq_offset(demod, &ctl_freq_offset));
+                       rc = get_ctl_freq_offset(demod, &ctl_freq_offset);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        channel->frequency -= ctl_freq_offset;
                        /* get the channel constellation */
                        channel->constellation = DRX_CONSTELLATION_AUTO;
@@ -13289,8 +17924,11 @@ ctrl_get_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                case DRX_STANDARD_ITU_C:
                        {
                                /* get the channel frequency */
-                               CHK_ERROR(get_ctl_freq_offset
-                                         (demod, &ctl_freq_offset));
+                               rc = get_ctl_freq_offset(demod, &ctl_freq_offset);
+                               if (rc != DRX_STS_OK) {
+                                       pr_err("error %d\n", rc);
+                                       goto rw_error;
+                               }
                                channel->frequency -= ctl_freq_offset;
 
                                if (standard == DRX_STANDARD_ITU_B) {
@@ -13342,7 +17980,11 @@ ctrl_get_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                                        cmd_scu.result_len = 3;
                                        cmd_scu.parameter = NULL;
                                        cmd_scu.result = cmd_result;
-                                       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+                                       rc = scu_command(dev_addr, &cmd_scu);
+                                       if (rc != DRX_STS_OK) {
+                                               pr_err("error %d\n", rc);
+                                               goto rw_error;
+                                       }
 
                                        channel->interleavemode =
                                            (enum drx_interleave_mode) (cmd_scu.
@@ -13386,7 +18028,11 @@ ctrl_get_channel(struct drx_demod_instance *demod, struct drx_channel *channel)
                case DRX_STANDARD_PAL_SECAM_L:
                case DRX_STANDARD_PAL_SECAM_LP:
                case DRX_STANDARD_FM:
-                       CHK_ERROR(get_atv_channel(demod, channel, standard));
+                       rc = get_atv_channel(demod, channel, standard);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
 #endif
                case DRX_STANDARD_UNKNOWN:      /* fall trough */
@@ -13451,6 +18097,7 @@ ctrl_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_q
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
        enum drx_standard standard = DRX_STANDARD_UNKNOWN;
        enum drx_lock_status lock_status = DRX_NOT_LOCKED;
        u16 min_mer = 0;
@@ -13467,14 +18114,25 @@ ctrl_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_q
 
        /* get basic information */
        dev_addr = demod->my_i2c_dev_addr;
-       CHK_ERROR(ctrl_lock_status(demod, &lock_status));
+       rc = ctrl_lock_status(demod, &lock_status);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        switch (standard) {
        case DRX_STANDARD_8VSB:
 #ifdef DRXJ_SIGNAL_ACCUM_ERR
-               CHK_ERROR(get_acc_pkt_err(demod, &sig_quality->packet_error));
+               rc = get_acc_pkt_err(demod, &sig_quality->packet_error);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 #else
-               CHK_ERROR(get_vsb_post_rs_pck_err
-                         (dev_addr, &sig_quality->packet_error));
+               rc = get_vsb_post_rs_pck_err(dev_addr, &sig_quality->packet_error);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 #endif
                if (lock_status != DRXJ_DEMOD_LOCK && lock_status != DRX_LOCKED) {
                        sig_quality->post_viterbi_ber = 500000;
@@ -13482,11 +18140,21 @@ ctrl_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_q
                        sig_quality->pre_viterbi_ber = 0;
                } else {
                        /* PostViterbi is compute in steps of 10^(-6) */
-                       CHK_ERROR(get_vs_bpre_viterbi_ber
-                                 (dev_addr, &sig_quality->pre_viterbi_ber));
-                       CHK_ERROR(get_vs_bpost_viterbi_ber
-                                 (dev_addr, &sig_quality->post_viterbi_ber));
-                       CHK_ERROR(get_vsbmer(dev_addr, &sig_quality->MER));
+                       rc = get_vs_bpre_viterbi_ber(dev_addr, &sig_quality->pre_viterbi_ber);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = get_vs_bpost_viterbi_ber(dev_addr, &sig_quality->post_viterbi_ber);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = get_vsbmer(dev_addr, &sig_quality->MER);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
                min_mer = 20;
                max_mer = 360;
@@ -13501,7 +18169,11 @@ ctrl_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_q
        case DRX_STANDARD_ITU_A:
        case DRX_STANDARD_ITU_B:
        case DRX_STANDARD_ITU_C:
-               CHK_ERROR(ctrl_get_qam_sig_quality(demod, sig_quality));
+               rc = ctrl_get_qam_sig_quality(demod, sig_quality);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                if (lock_status != DRXJ_DEMOD_LOCK && lock_status != DRX_LOCKED) {
                        switch (ext_attr->constellation) {
                        case DRX_CONSTELLATION_QAM256:
@@ -13555,10 +18227,18 @@ ctrl_sig_quality(struct drx_demod_instance *demod, struct drx_sig_quality *sig_q
        case DRX_STANDARD_PAL_SECAM_L:
        case DRX_STANDARD_PAL_SECAM_LP:
        case DRX_STANDARD_NTSC:
-               CHK_ERROR(atv_sig_quality(demod, sig_quality));
+               rc = atv_sig_quality(demod, sig_quality);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
        case DRX_STANDARD_FM:
-               CHK_ERROR(fm_sig_quality(demod, sig_quality));
+               rc = fm_sig_quality(demod, sig_quality);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        default:
@@ -13592,6 +18272,7 @@ ctrl_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_st
                /* *parameter   */ NULL,
                /* *result      */ NULL
        };
+       int rc;
        u16 cmd_result[2] = { 0, 0 };
        u16 demod_lock = SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_DEMOD_LOCKED;
 
@@ -13644,7 +18325,11 @@ ctrl_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_st
        cmd_scu.result_len = 2;
        cmd_scu.parameter = NULL;
        cmd_scu.result = cmd_result;
-       CHK_ERROR(scu_command(dev_addr, &cmd_scu));
+       rc = scu_command(dev_addr, &cmd_scu);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* set the lock status */
        if (cmd_scu.result[1] < demod_lock) {
@@ -13680,6 +18365,7 @@ rw_error:
 static int
 ctrl_constel(struct drx_demod_instance *demod, struct drx_complex *complex_nr)
 {
+       int rc;
        enum drx_standard standard = DRX_STANDARD_UNKNOWN;
                                                     /**< active standard */
 
@@ -13694,13 +18380,21 @@ ctrl_constel(struct drx_demod_instance *demod, struct drx_complex *complex_nr)
        /* Read constellation point  */
        switch (standard) {
        case DRX_STANDARD_8VSB:
-               CHK_ERROR(ctrl_get_vsb_constel(demod, complex_nr));
+               rc = ctrl_get_vsb_constel(demod, complex_nr);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #ifndef DRXJ_VSB_ONLY
        case DRX_STANDARD_ITU_A:        /* fallthrough */
        case DRX_STANDARD_ITU_B:        /* fallthrough */
        case DRX_STANDARD_ITU_C:
-               CHK_ERROR(ctrl_get_qam_constel(demod, complex_nr));
+               rc = ctrl_get_qam_constel(demod, complex_nr);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        case DRX_STANDARD_UNKNOWN:
@@ -13729,6 +18423,7 @@ static int
 ctrl_set_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
 {
        struct drxj_data *ext_attr = NULL;
+       int rc;
        enum drx_standard prev_standard;
 
        /* check arguments */
@@ -13747,11 +18442,19 @@ ctrl_set_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
        case DRX_STANDARD_ITU_A:        /* fallthrough */
        case DRX_STANDARD_ITU_B:        /* fallthrough */
        case DRX_STANDARD_ITU_C:
-               CHK_ERROR(power_down_qam(demod, false));
+               rc = power_down_qam(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        case DRX_STANDARD_8VSB:
-               CHK_ERROR(power_down_vsb(demod, false));
+               rc = power_down_vsb(demod, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #ifndef DRXJ_DIGITAL_ONLY
        case DRX_STANDARD_NTSC: /* fallthrough */
@@ -13761,7 +18464,11 @@ ctrl_set_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
        case DRX_STANDARD_PAL_SECAM_I:  /* fallthrough */
        case DRX_STANDARD_PAL_SECAM_L:  /* fallthrough */
        case DRX_STANDARD_PAL_SECAM_LP:
-               CHK_ERROR(power_down_atv(demod, prev_standard, false));
+               rc = power_down_atv(demod, prev_standard, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        case DRX_STANDARD_UNKNOWN:
@@ -13783,11 +18490,22 @@ ctrl_set_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
        case DRX_STANDARD_ITU_A:        /* fallthrough */
        case DRX_STANDARD_ITU_B:        /* fallthrough */
        case DRX_STANDARD_ITU_C:
-               DUMMY_READ();
+               do {
+                       u16 dummy;
+                       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }while (0);
                break;
 #endif
        case DRX_STANDARD_8VSB:
-               CHK_ERROR(set_vsb_leak_n_gain(demod));
+               rc = set_vsb_leak_n_gain(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #ifndef DRXJ_DIGITAL_ONLY
        case DRX_STANDARD_NTSC: /* fallthrough */
@@ -13797,8 +18515,16 @@ ctrl_set_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
        case DRX_STANDARD_PAL_SECAM_I:  /* fallthrough */
        case DRX_STANDARD_PAL_SECAM_L:  /* fallthrough */
        case DRX_STANDARD_PAL_SECAM_LP:
-               CHK_ERROR(set_atv_standard(demod, standard));
-               CHK_ERROR(power_up_atv(demod, *standard));
+               rc = set_atv_standard(demod, standard);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = power_up_atv(demod, *standard);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        default:
@@ -13829,6 +18555,7 @@ static int
 ctrl_get_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
 {
        struct drxj_data *ext_attr = NULL;
+       int rc;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
        /* check arguments */
@@ -13836,7 +18563,14 @@ ctrl_get_standard(struct drx_demod_instance *demod, enum drx_standard *standard)
                return (DRX_STS_INVALID_ARG);
        }
        (*standard) = ext_attr->standard;
-       DUMMY_READ();
+       do {
+               u16 dummy;
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+       }while (0);
 
        return (DRX_STS_OK);
 rw_error:
@@ -13856,6 +18590,7 @@ static int
 ctrl_get_cfg_symbol_clock_offset(struct drx_demod_instance *demod, s32 *rate_offset)
 {
        enum drx_standard standard = DRX_STANDARD_UNKNOWN;
+       int rc;
        struct drxj_data *ext_attr = NULL;
 
        /* check arguments */
@@ -13872,7 +18607,11 @@ ctrl_get_cfg_symbol_clock_offset(struct drx_demod_instance *demod, s32 *rate_off
        case DRX_STANDARD_ITU_B:        /* fallthrough */
        case DRX_STANDARD_ITU_C:
 #endif
-               CHK_ERROR(get_str_freq_offset(demod, rate_offset));
+               rc = get_str_freq_offset(demod, rate_offset);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
        case DRX_STANDARD_NTSC:
        case DRX_STANDARD_UNKNOWN:
@@ -13905,6 +18644,7 @@ ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode)
        struct drx_common_attr *common_attr = (struct drx_common_attr *) NULL;
        struct drxj_data *ext_attr = (struct drxj_data *) NULL;
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)NULL;
+       int rc;
        u16 sio_cc_pwd_mode = 0;
 
        common_attr = (struct drx_common_attr *) demod->my_common_attr;
@@ -13943,7 +18683,11 @@ ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode)
 
        /* Check if device needs to be powered up */
        if ((common_attr->current_power_mode != DRX_POWER_UP)) {
-               CHK_ERROR(power_up_device(demod));
+               rc = power_up_device(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        if ((*mode == DRX_POWER_UP)) {
@@ -13964,10 +18708,18 @@ ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode)
                case DRX_STANDARD_ITU_A:
                case DRX_STANDARD_ITU_B:
                case DRX_STANDARD_ITU_C:
-                       CHK_ERROR(power_down_qam(demod, true));
+                       rc = power_down_qam(demod, true);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_STANDARD_8VSB:
-                       CHK_ERROR(power_down_vsb(demod, true));
+                       rc = power_down_vsb(demod, true);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */
                case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */
@@ -13976,7 +18728,11 @@ ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode)
                case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */
                case DRX_STANDARD_NTSC: /* fallthrough */
                case DRX_STANDARD_FM:
-                       CHK_ERROR(power_down_atv(demod, ext_attr->standard, true));
+                       rc = power_down_atv(demod, ext_attr->standard, true);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        break;
                case DRX_STANDARD_UNKNOWN:
                        /* Do nothing */
@@ -13987,14 +18743,30 @@ ctrl_power_mode(struct drx_demod_instance *demod, enum drx_power_mode *mode)
                }
 
                if (*mode != DRXJ_POWER_DOWN_MAIN_PATH) {
-                       WR16(dev_addr, SIO_CC_PWD_MODE__A, sio_cc_pwd_mode);
-                       WR16(dev_addr, SIO_CC_UPDATE__A, SIO_CC_UPDATE_KEY);
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_CC_PWD_MODE__A, sio_cc_pwd_mode, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_CC_UPDATE__A, SIO_CC_UPDATE_KEY, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        /* Initialize HI, wakeup key especially before put IC to sleep */
-                       CHK_ERROR(init_hi(demod));
+                       rc = init_hi(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 
                        ext_attr->hi_cfg_ctrl |= SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ;
-                       CHK_ERROR(hi_cfg_command(demod));
+                       rc = hi_cfg_command(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
        }
 
@@ -14033,6 +18805,7 @@ ctrl_version(struct drx_demod_instance *demod, struct drx_version_list **version
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
        struct drx_common_attr *common_attr = (struct drx_common_attr *) (NULL);
+       int rc;
        u16 ucode_major_minor = 0;      /* BCD Ma:Ma:Ma:Mi */
        u16 ucode_patch = 0;    /* BCD Pa:Pa:Pa:Pa */
        u16 major = 0;
@@ -14059,8 +18832,16 @@ ctrl_version(struct drx_demod_instance *demod, struct drx_version_list **version
        ext_attr->v_version[0].v_string = ext_attr->v_text[0];
 
        if (common_attr->is_opened == true) {
-               SARR16(dev_addr, SCU_RAM_VERSION_HI__A, &ucode_major_minor);
-               SARR16(dev_addr, SCU_RAM_VERSION_LO__A, &ucode_patch);
+               rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_VERSION_HI__A, &ucode_major_minor, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+               rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_VERSION_LO__A, &ucode_patch, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* Translate BCD to numbers and string */
                /* TODO: The most significant Ma and Pa will be ignored, check with spec */
@@ -14111,11 +18892,31 @@ ctrl_version(struct drx_demod_instance *demod, struct drx_version_list **version
 
        /* Device version *************************************** */
        /* Check device id */
-       RR16(dev_addr, SIO_TOP_COMM_KEY__A, &key);
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA);
-       RR32(dev_addr, SIO_TOP_JTAGID_LO__A, &jtag);
-       RR16(dev_addr, SIO_PDR_UIO_IN_HI__A, &bid);
-       WR16(dev_addr, SIO_TOP_COMM_KEY__A, key);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, &key, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, 0xFABA, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg32func(dev_addr, SIO_TOP_JTAGID_LO__A, &jtag, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, SIO_PDR_UIO_IN_HI__A, &bid, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_TOP_COMM_KEY__A, key, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        ext_attr->v_version[1].module_type = DRX_MODULE_DEVICE;
        ext_attr->v_version[1].module_name = device_name;
@@ -14183,6 +18984,7 @@ static int ctrl_probe_device(struct drx_demod_instance *demod)
        enum drx_power_mode org_power_mode = DRX_POWER_UP;
        int ret_status = DRX_STS_OK;
        struct drx_common_attr *common_attr = (struct drx_common_attr *) (NULL);
+       int rc;
 
        common_attr = (struct drx_common_attr *) demod->my_common_attr;
 
@@ -14198,17 +19000,33 @@ static int ctrl_probe_device(struct drx_demod_instance *demod)
                org_power_mode = common_attr->current_power_mode;
 
                if (demod->my_common_attr->is_opened == false) {
-                       CHK_ERROR(power_up_device(demod));
+                       rc = power_up_device(demod);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                        common_attr->current_power_mode = DRX_POWER_UP;
                } else {
                        /* Wake-up device, feedback from device */
-                       CHK_ERROR(ctrl_power_mode(demod, &power_mode));
+                       rc = ctrl_power_mode(demod, &power_mode);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
                /* Initialize HI, wakeup key especially */
-               CHK_ERROR(init_hi(demod));
+               rc = init_hi(demod);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                /* Check device id */
-               RR32(dev_addr, SIO_TOP_JTAGID_LO__A, &jtag);
+               rc = DRXJ_DAP.read_reg32func(dev_addr, SIO_TOP_JTAGID_LO__A, &jtag, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                jtag = (jtag >> 12) & 0xFFFF;
                switch (jtag) {
                case 0x3931:    /* fallthrough */
@@ -14230,11 +19048,22 @@ static int ctrl_probe_device(struct drx_demod_instance *demod)
 
                /* Device was not opened, return to orginal powermode,
                   feedback from device */
-               CHK_ERROR(ctrl_power_mode(demod, &org_power_mode));
+               rc = ctrl_power_mode(demod, &org_power_mode);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        } else {
                /* dummy read to make this function fail in case device
                   suddenly disappears after a succesful drx_open */
-               DUMMY_READ();
+               do {
+                       u16 dummy;
+                       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }while (0);
        }
 
        return (ret_status);
@@ -14286,6 +19115,7 @@ ctrl_u_codeUpload(struct drx_demod_instance *demod,
        u8 *mc_data = (u8 *)(NULL);
        struct i2c_device_addr *dev_addr = (struct i2c_device_addr *)(NULL);
        struct drxj_data *ext_attr = (struct drxj_data *) (NULL);
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -14461,6 +19291,7 @@ ctrl_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
 {
        struct drxj_data *ext_attr = NULL;
        enum drx_standard standard = DRX_STANDARD_UNKNOWN;
+       int rc;
 
        /* Check arguments */
        if ((sig_strength == NULL) || (demod == NULL)) {
@@ -14479,7 +19310,11 @@ ctrl_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
        case DRX_STANDARD_ITU_B:        /* fallthrough */
        case DRX_STANDARD_ITU_C:
 #endif
-               CHK_ERROR(get_sig_strength(demod, sig_strength));
+               rc = get_sig_strength(demod, sig_strength);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #ifndef DRXJ_DIGITAL_ONLY
        case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */
@@ -14489,7 +19324,11 @@ ctrl_sig_strength(struct drx_demod_instance *demod, u16 *sig_strength)
        case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */
        case DRX_STANDARD_NTSC: /* fallthrough */
        case DRX_STANDARD_FM:
-               CHK_ERROR(get_atv_sig_strength(demod, sig_strength));
+               rc = get_atv_sig_strength(demod, sig_strength);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
                break;
 #endif
        case DRX_STANDARD_UNKNOWN:      /* fallthrough */
@@ -14517,6 +19356,7 @@ static int
 ctrl_get_cfg_oob_misc(struct drx_demod_instance *demod, struct drxj_cfg_oob_misc *misc)
 {
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
        u16 lock = 0U;
        u16 state = 0U;
        u16 data = 0U;
@@ -14531,16 +19371,32 @@ ctrl_get_cfg_oob_misc(struct drx_demod_instance *demod, struct drxj_cfg_oob_misc
 
        /* TODO */
        /* check if the same registers are used for all standards (QAM/VSB/ATV) */
-       RR16(dev_addr, ORX_NSU_TUN_IFGAIN_W__A, &misc->agc.IFAGC);
-       RR16(dev_addr, ORX_NSU_TUN_RFGAIN_W__A, &misc->agc.RFAGC);
-       RR16(dev_addr, ORX_FWP_SRC_DGN_W__A, &data);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_NSU_TUN_IFGAIN_W__A, &misc->agc.IFAGC, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_NSU_TUN_RFGAIN_W__A, &misc->agc.RFAGC, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, ORX_FWP_SRC_DGN_W__A, &data, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        digital_agc_mant = data & ORX_FWP_SRC_DGN_W_MANT__M;
        digital_agc_exp = (data & ORX_FWP_SRC_DGN_W_EXP__M)
            >> ORX_FWP_SRC_DGN_W_EXP__B;
        misc->agc.digital_agc = digital_agc_mant << digital_agc_exp;
 
-       SARR16(dev_addr, SCU_RAM_ORX_SCU_LOCK__A, &lock);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ORX_SCU_LOCK__A, &lock, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        misc->ana_gain_lock = ((lock & 0x0001) ? true : false);
        misc->dig_gain_lock = ((lock & 0x0002) ? true : false);
@@ -14549,7 +19405,11 @@ ctrl_get_cfg_oob_misc(struct drx_demod_instance *demod, struct drxj_cfg_oob_misc
        misc->sym_timing_lock = ((lock & 0x0010) ? true : false);
        misc->eq_lock = ((lock & 0x0020) ? true : false);
 
-       SARR16(dev_addr, SCU_RAM_ORX_SCU_STATE__A, &state);
+       rc = drxj_dap_scu_atomic_read_reg16(dev_addr, SCU_RAM_ORX_SCU_STATE__A, &state, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        misc->state = (state >> 8) & 0xff;
 
        return (DRX_STS_OK);
@@ -14569,6 +19429,7 @@ static int
 ctrl_get_cfg_vsb_misc(struct drx_demod_instance *demod, struct drxj_cfg_vsb_misc *misc)
 {
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
 
        /* check arguments */
        if (misc == NULL) {
@@ -14576,7 +19437,11 @@ ctrl_get_cfg_vsb_misc(struct drx_demod_instance *demod, struct drxj_cfg_vsb_misc
        }
        dev_addr = demod->my_i2c_dev_addr;
 
-       CHK_ERROR(get_vsb_symb_err(dev_addr, &misc->symb_error));
+       rc = get_vsb_symb_err(dev_addr, &misc->symb_error);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -14806,6 +19671,7 @@ static int
 ctrl_get_cfg_agc_internal(struct drx_demod_instance *demod, u16 *agc_internal)
 {
        struct i2c_device_addr *dev_addr = NULL;
+       int rc;
        enum drx_lock_status lock_status = DRX_NOT_LOCKED;
        struct drxj_data *ext_attr = NULL;
        u16 iqm_cf_scale_sh = 0;
@@ -14820,7 +19686,11 @@ ctrl_get_cfg_agc_internal(struct drx_demod_instance *demod, u16 *agc_internal)
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
 
-       CHK_ERROR(ctrl_lock_status(demod, &lock_status));
+       rc = ctrl_lock_status(demod, &lock_status);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        if (lock_status != DRXJ_DEMOD_LOCK && lock_status != DRX_LOCKED) {
                *agc_internal = 0;
                return DRX_STS_OK;
@@ -14854,9 +19724,21 @@ ctrl_get_cfg_agc_internal(struct drx_demod_instance *demod, u16 *agc_internal)
                return (DRX_STS_INVALID_ARG);
        }
 
-       RR16(dev_addr, IQM_CF_POW__A, &iqm_cf_power);
-       RR16(dev_addr, IQM_CF_SCALE_SH__A, &iqm_cf_scale_sh);
-       RR16(dev_addr, IQM_CF_AMP__A, &iqm_cf_amp);
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_CF_POW__A, &iqm_cf_power, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_CF_SCALE_SH__A, &iqm_cf_scale_sh, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.read_reg16func(dev_addr, IQM_CF_AMP__A, &iqm_cf_amp, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* IQM_CF_PWR_CORRECTION_dB = 3;
           P5dB =10*log10(IQM_CF_POW)+12-6*9-IQM_CF_PWR_CORRECTION_dB; */
        /* P4dB = P5dB -20*log10(IQM_CF_AMP)-6*10
@@ -14890,6 +19772,7 @@ ctrl_set_cfg_pre_saw(struct drx_demod_instance *demod, struct drxj_cfg_pre_saw *
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
@@ -14906,7 +19789,11 @@ ctrl_set_cfg_pre_saw(struct drx_demod_instance *demod, struct drxj_cfg_pre_saw *
             DRXJ_ISQAMSTD(pre_saw->standard)) ||
            (DRXJ_ISATVSTD(ext_attr->standard) &&
             DRXJ_ISATVSTD(pre_saw->standard))) {
-               WR16(dev_addr, IQM_AF_PDREF__A, pre_saw->reference);
+               rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_PDREF__A, pre_saw->reference, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
        }
 
        /* Store pre-saw settings */
@@ -14959,6 +19846,7 @@ ctrl_set_cfg_afe_gain(struct drx_demod_instance *demod, struct drxj_cfg_afe_gain
 {
        struct i2c_device_addr *dev_addr = NULL;
        struct drxj_data *ext_attr = NULL;
+       int rc;
        u8 gain = 0;
 
        /* check arguments */
@@ -14993,8 +19881,14 @@ ctrl_set_cfg_afe_gain(struct drx_demod_instance *demod, struct drxj_cfg_afe_gain
                gain = (afe_gain->gain - 140 + 6) / 13;
 
        /* Only if standard is currently active */
-       if (ext_attr->standard == afe_gain->standard)
-               WR16(dev_addr, IQM_AF_PGA_GAIN__A, gain);
+       if (ext_attr->standard == afe_gain->standard){
+
+                       rc = DRXJ_DAP.write_reg16func(dev_addr, IQM_AF_PGA_GAIN__A, gain, 0);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }
 
        /* Store AFE Gain settings */
        switch (afe_gain->standard) {
@@ -15132,12 +20026,17 @@ ctrl_get_cfg_afe_gain(struct drx_demod_instance *demod, struct drxj_cfg_afe_gain
 static int
 ctrl_get_fec_meas_seq_count(struct drx_demod_instance *demod, u16 *fec_meas_seq_count)
 {
+       int rc;
        /* check arguments */
        if (fec_meas_seq_count == NULL) {
                return (DRX_STS_INVALID_ARG);
        }
 
-       RR16(demod->my_i2c_dev_addr, SCU_RAM_FEC_MEAS_COUNT__A, fec_meas_seq_count);
+       rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_FEC_MEAS_COUNT__A, fec_meas_seq_count, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -15160,12 +20059,16 @@ rw_error:
 static int
 ctrl_get_accum_cr_rs_cw_err(struct drx_demod_instance *demod, u32 *accum_cr_rs_cw_err)
 {
+       int rc;
        if (accum_cr_rs_cw_err == NULL) {
                return (DRX_STS_INVALID_ARG);
        }
 
-       RR32(demod->my_i2c_dev_addr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A,
-            accum_cr_rs_cw_err);
+       rc = DRXJ_DAP.read_reg32func(demod->my_i2c_dev_addr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, accum_cr_rs_cw_err, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return (DRX_STS_OK);
 rw_error:
@@ -15182,11 +20085,19 @@ rw_error:
 */
 static int ctrl_set_cfg(struct drx_demod_instance *demod, struct drx_cfg *config)
 {
-       if (config == NULL) {
+       int rc;
+
+       if (config == NULL)
                return (DRX_STS_INVALID_ARG);
-       }
 
-       DUMMY_READ();
+       do {
+               u16 dummy;
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+       }while (0);
        switch (config->cfg_type) {
        case DRX_CFG_MPEG_OUTPUT:
                return ctrl_set_cfg_mpeg_output(demod,
@@ -15290,11 +20201,19 @@ rw_error:
 
 static int ctrl_get_cfg(struct drx_demod_instance *demod, struct drx_cfg *config)
 {
-       if (config == NULL) {
+       int rc;
+
+       if (config == NULL)
                return (DRX_STS_INVALID_ARG);
-       }
 
-       DUMMY_READ();
+       do {
+               u16 dummy;
+               rc = DRXJ_DAP.read_reg16func(demod->my_i2c_dev_addr, SCU_RAM_VERSION_HI__A, &dummy, 0);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
+       }while (0);
 
        switch (config->cfg_type) {
        case DRX_CFG_MPEG_OUTPUT:
@@ -15429,45 +20348,91 @@ int drxj_open(struct drx_demod_instance *demod)
        u32 driver_version = 0;
        struct drxu_code_info ucode_info;
        struct drx_cfg_mpeg_output cfg_mpeg_output;
+       int rc;
 
        /* Check arguments */
-       if (demod->my_ext_attr == NULL) {
+       if (demod->my_ext_attr == NULL)
                return (DRX_STS_INVALID_ARG);
-       }
 
        dev_addr = demod->my_i2c_dev_addr;
        ext_attr = (struct drxj_data *) demod->my_ext_attr;
        common_attr = (struct drx_common_attr *) demod->my_common_attr;
 
-       CHK_ERROR(power_up_device(demod));
+       rc = power_up_device(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        common_attr->current_power_mode = DRX_POWER_UP;
 
        /* has to be in front of setIqmAf and setOrxNsuAox */
-       CHK_ERROR(get_device_capabilities(demod));
+       rc = get_device_capabilities(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Soft reset of sys- and osc-clockdomain */
-       WR16(dev_addr, SIO_CC_SOFT_RST__A, (SIO_CC_SOFT_RST_SYS__M |
-                                          SIO_CC_SOFT_RST_OSC__M));
-       WR16(dev_addr, SIO_CC_UPDATE__A, SIO_CC_UPDATE_KEY);
-       CHK_ERROR(drxbsp_hst_sleep(1));
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_CC_SOFT_RST__A, (SIO_CC_SOFT_RST_SYS__M | SIO_CC_SOFT_RST_OSC__M), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SIO_CC_UPDATE__A, SIO_CC_UPDATE_KEY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = drxbsp_hst_sleep(1);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* TODO first make sure that everything keeps working before enabling this */
        /* PowerDownAnalogBlocks() */
-       WR16(dev_addr, ATV_TOP_STDBY__A, (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE)
-            | ATV_TOP_STDBY_SIF_STDBY_STANDBY);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, ATV_TOP_STDBY__A, (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE) | ATV_TOP_STDBY_SIF_STDBY_STANDBY, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       CHK_ERROR(set_iqm_af(demod, false));
-       CHK_ERROR(set_orx_nsu_aox(demod, false));
+       rc = set_iqm_af(demod, false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = set_orx_nsu_aox(demod, false);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
-       CHK_ERROR(init_hi(demod));
+       rc = init_hi(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* disable mpegoutput pins */
        cfg_mpeg_output.enable_mpeg_output = false;
-       CHK_ERROR(ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output));
+       rc = ctrl_set_cfg_mpeg_output(demod, &cfg_mpeg_output);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* Stop AUD Inform SetAudio it will need to do all setting */
-       CHK_ERROR(power_down_aud(demod));
+       rc = power_down_aud(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        /* Stop SCU */
-       WR16(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_STOP);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_STOP, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Upload microcode */
        if (common_attr->microcode != NULL) {
@@ -15479,25 +20444,42 @@ int drxj_open(struct drx_demod_instance *demod)
 
 #ifdef DRXJ_SPLIT_UCODE_UPLOAD
                /* Upload microcode without audio part */
-               CHK_ERROR(ctrl_u_codeUpload
-                         (demod, &ucode_info, UCODE_UPLOAD, false));
+               rc = ctrl_u_codeUpload(demod, &ucode_info, UCODE_UPLOAD, false);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 #else
-               CHK_ERROR(drx_ctrl(demod, DRX_CTRL_LOAD_UCODE, &ucode_info));
+               rc = drx_ctrl(demod, DRX_CTRL_LOAD_UCODE, &ucode_info);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 #endif /* DRXJ_SPLIT_UCODE_UPLOAD */
                if (common_attr->verify_microcode == true) {
 #ifdef DRXJ_SPLIT_UCODE_UPLOAD
-                       CHK_ERROR(ctrl_u_codeUpload
-                                 (demod, &ucode_info, UCODE_VERIFY, false));
+                       rc = ctrl_u_codeUpload(demod, &ucode_info, UCODE_VERIFY, false);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 #else
-                       CHK_ERROR(drx_ctrl
-                                 (demod, DRX_CTRL_VERIFY_UCODE, &ucode_info));
+                       rc = drx_ctrl(demod, DRX_CTRL_VERIFY_UCODE, &ucode_info);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
 #endif /* DRXJ_SPLIT_UCODE_UPLOAD */
                }
                common_attr->is_opened = false;
        }
 
        /* Run SCU for a little while to initialize microcode version numbers */
-       WR16(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Open tuner instance */
        if (demod->my_tuner != NULL) {
@@ -15505,14 +20487,26 @@ int drxj_open(struct drx_demod_instance *demod)
 
                if (common_attr->tuner_port_nr == 1) {
                        bool bridge_closed = true;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
 
-               CHK_ERROR(drxbsp_tuner_open(demod->my_tuner));
+               rc = drxbsp_tuner_open(demod->my_tuner);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
+               }
 
                if (common_attr->tuner_port_nr == 1) {
                        bool bridge_closed = false;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
                common_attr->tuner_min_freq_rf =
                    ((demod->my_tuner)->my_common_attr->min_freq_rf);
@@ -15597,7 +20591,11 @@ int drxj_open(struct drx_demod_instance *demod)
 #endif
        ext_attr->standard = DRX_STANDARD_UNKNOWN;
 
-       CHK_ERROR(smart_ant_init(demod));
+       rc = smart_ant_init(demod);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* Stamp driver version number in SCU data RAM in BCD code
           Done to enable field application engineers to retreive drxdriver version
@@ -15618,9 +20616,16 @@ int drxj_open(struct drx_demod_instance *demod)
        driver_version += (VERSION_PATCH / 10) % 10;
        driver_version <<= 4;
        driver_version += (VERSION_PATCH % 10);
-       WR16(dev_addr, SCU_RAM_DRIVER_VER_HI__A, (u16) (driver_version >> 16));
-       WR16(dev_addr, SCU_RAM_DRIVER_VER_LO__A,
-            (u16) (driver_version & 0xFFFF));
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_DRIVER_VER_HI__A, (u16)(driver_version >> 16), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_RAM_DRIVER_VER_LO__A, (u16)(driver_version & 0xFFFF), 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        /* refresh the audio data structure with default */
        ext_attr->aud_data = drxj_default_aud_data_g;
@@ -15642,27 +20647,52 @@ int drxj_close(struct drx_demod_instance *demod)
 {
        struct i2c_device_addr *dev_addr = demod->my_i2c_dev_addr;
        struct drx_common_attr *common_attr = demod->my_common_attr;
+       int rc;
        enum drx_power_mode power_mode = DRX_POWER_UP;
 
        /* power up */
-       CHK_ERROR(ctrl_power_mode(demod, &power_mode));
+       rc = ctrl_power_mode(demod, &power_mode);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        if (demod->my_tuner != NULL) {
                /* Check if bridge is used */
                if (common_attr->tuner_port_nr == 1) {
                        bool bridge_closed = true;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
+               }
+               rc = drxbsp_tuner_close(demod->my_tuner);
+               if (rc != DRX_STS_OK) {
+                       pr_err("error %d\n", rc);
+                       goto rw_error;
                }
-               CHK_ERROR(drxbsp_tuner_close(demod->my_tuner));
                if (common_attr->tuner_port_nr == 1) {
                        bool bridge_closed = false;
-                       CHK_ERROR(ctrl_i2c_bridge(demod, &bridge_closed));
+                       rc = ctrl_i2c_bridge(demod, &bridge_closed);
+                       if (rc != DRX_STS_OK) {
+                               pr_err("error %d\n", rc);
+                               goto rw_error;
+                       }
                }
        };
 
-       WR16(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE);
+       rc = DRXJ_DAP.write_reg16func(dev_addr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE, 0);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
        power_mode = DRX_POWER_DOWN;
-       CHK_ERROR(ctrl_power_mode(demod, &power_mode));
+       rc = ctrl_power_mode(demod, &power_mode);
+       if (rc != DRX_STS_OK) {
+               pr_err("error %d\n", rc);
+               goto rw_error;
+       }
 
        return DRX_STS_OK;
 rw_error:
@@ -15865,5 +20895,3 @@ drxj_ctrl(struct drx_demod_instance *demod, u32 ctrl, void *ctrl_data)
        }
        return (DRX_STS_OK);
 }
-
-/* END OF FILE */