[media] drx-j: replace the ugly CHK_ERROR() macro

Author: Mauro Carvalho Chehab <m.chehab@samsung.com>

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 
Signed-off-by: Mauro Carvalho Chehab 
---
 drivers/media/dvb-frontends/drx39xyj/drxj.c | 8488 +++++++++++++++++++++------
 1 file changed, 6758 insertions(+), 1730 deletions(-)
 
diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj.c b/drivers/media/dvb-frontends/drx39xyj/drxj.c
index d51cea9..13bb381 100644
--- a/drivers/media/dvb-frontends/drx39xyj/drxj.c
+++ b/drivers/media/dvb-frontends/drx39xyj/drxj.c
@@ -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 */
BtrLinux
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.