diff --git a/arch/arm/mach-comcerto/include/mach/ecc.h b/arch/arm/mach-comcerto/include/mach/ecc.h
index f82a611..693cf95 100644
--- a/arch/arm/mach-comcerto/include/mach/ecc.h
+++ b/arch/arm/mach-comcerto/include/mach/ecc.h
@@ -89,7 +89,6 @@
 #define ECC_SHIFT_DISABLE	0x0
 #define ECC_PARITY_OUT_EN	0x1
 #define ECC_PARITY_OUT_DISABLE	0x0
-#define ECC_UNCORR_ERR_HAMM	0x4
 
 /* Polynomial Start Configuration (ECC_POLY_START_CFG) */
 #define ECC_POLY_START		(1 << 0)
diff --git a/drivers/mtd/nand/comcerto_nand.c b/drivers/mtd/nand/comcerto_nand.c
index 6c840ac..81d7802 100644
--- a/drivers/mtd/nand/comcerto_nand.c
+++ b/drivers/mtd/nand/comcerto_nand.c
@@ -77,7 +77,7 @@
 	}
 };
 
-#elif CONFIG_NAND_COMCERTO_ECC_8_HW_BCH
+#elif defined(CONFIG_NAND_COMCERTO_ECC_8_HW_BCH)
 
 /*
  * spare area layout for BCH ECC bytes calculated over 512-Bytes ECC block size
@@ -161,7 +161,7 @@
 	.len = 1,
 	.pattern = scan_ff_pattern
 };
-#elif CONFIG_NAND_COMCERTO_ECC_8_HW_BCH
+#elif defined(CONFIG_NAND_COMCERTO_ECC_8_HW_BCH)
 static struct nand_bbt_descr c2000_badblock_pattern = {
 	.offs = 14,
 	.len = 1,
@@ -225,17 +225,25 @@
 				  uint8_t *ecc_code)
 {
 	struct nand_chip *nand_device = mtd->priv;
-	uint32_t ecc_bytes = nand_device->ecc.bytes;
+	int ecc_bytes = nand_device->ecc.bytes;
 	uint8_t dummy_var = 0xFF;
-	unsigned long timeo = jiffies + 2;
+	unsigned long timeo;
 
 	comcerto_ecc_shift(ECC_SHIFT_DISABLE);
 
-	do {
-		if ((readl_relaxed(ecc_base_addr + ECC_IDLE_STAT)) & ECC_IDLE)
+	/* Wait for syndrome calculation to complete */
+	timeo = jiffies + 4;
+	for (;;) {
+		int is_timeout = time_after_eq(jiffies, timeo);
+		int is_idle = readl_relaxed(ecc_base_addr + ECC_IDLE_STAT) & ECC_IDLE;
+		if (is_idle)
 			break;
+		if (is_timeout) {
+			pr_err("ECC Timeout waiting for parity module to become idle 1\n");
+			return -EIO;
+		}
 		touch_softlockup_watchdog();
-	} while (time_before(jiffies, timeo));
+	}
 
 	comcerto_ecc_shift(ECC_SHIFT_ENABLE);
 
@@ -271,15 +279,20 @@
 	uint32_t err_corr_data;
 	uint16_t mask, index;
 	uint32_t temp_nand_ecc_errors[4];
-	unsigned long timeo = jiffies + 2;
+	unsigned long timeo;
 
-	 /* Wait for syndrome calculation to complete */
-	while (!(readl_relaxed(ecc_base_addr + ECC_IDLE_STAT) & ECC_IDLE)) {
-		touch_softlockup_watchdog();
-		if (time_after_eq(jiffies, timeo)) {
-			pr_warn_ratelimited("Timeout waiting for parity module to become idle");
+	/* Wait for syndrome calculation to complete */
+	timeo = jiffies + 4;
+	for (;;) {
+		int is_timeout = time_after_eq(jiffies, timeo);
+		int is_idle = readl_relaxed(ecc_base_addr + ECC_IDLE_STAT) & ECC_IDLE;
+		if (is_idle)
+			break;
+		if (is_timeout) {
+			pr_err("ECC Timeout waiting for parity module to become idle 2\n");
 			return -EIO;
 		}
+		touch_softlockup_watchdog();
 	}
 
 	 /* If no correction is required */
@@ -294,19 +307,22 @@
 
 	udelay(25);
 
-	timeo = jiffies + 2;
+	timeo = jiffies + 4;
 	err_corr_data_prev = 0;
 	/* Read Correction data status register till header is 0x7FD */
-	while(1) {
+	for (;;) {
+		int is_startcode;
+		int is_timeout = time_after_eq(jiffies, timeo);
 		err_corr_data_prev = readl_relaxed(ecc_base_addr + ECC_CORR_DATA_STAT);
-		if ((err_corr_data_prev >> ECC_BCH_INDEX_SHIFT) == 0x87FD)
+		is_startcode = (err_corr_data_prev >> ECC_BCH_INDEX_SHIFT) == 0x87FD;
+		if (is_startcode)
 			break;
-
-		touch_softlockup_watchdog();
-		if (time_after_eq(jiffies, timeo)) {
-			pr_warn_ratelimited("Timeout waiting for ECC correction data");
+		if (is_timeout) {
+			pr_err("Timeout waiting for ECC correction data, reg=%08x\n",
+				err_corr_data_prev);
 			return -EIO;
 		}
+		touch_softlockup_watchdog();
 	}
 
 	udelay(25);
@@ -322,8 +338,8 @@
 		index = (err_corr_data >> 16) & 0x7FF;
 		mask = err_corr_data & 0xFFFF;
 		if (index * 2 >= nand_device->ecc.size) {
-			pr_warn_ratelimited("ECC correction index out of "
-					"bounds. ECC_CORR_DATA_STAT %08x",
+			pr_err("ECC correction index out of "
+					"bounds. ECC_CORR_DATA_STAT %08x\n",
 					err_corr_data);
 			continue;
 		}
@@ -337,13 +353,13 @@
 
 	if (!((readl_relaxed(ecc_base_addr + ECC_CORR_DONE_STAT)) & ECC_DONE)) {
 		temp_nand_ecc_errors[0] += 1 ;
-		printk_ratelimited(KERN_WARNING "ECC: uncorrectable error 1 !!!\n");
+		pr_err("ECC: uncorrectable error 1 !!!\n");
 		return -1;
 	}
 
 	/* Check if the block has uncorrectable number of errors */
 	if ((readl_relaxed(ecc_base_addr + ECC_CORR_STAT)) & ECC_UNCORR) {
-		printk_ratelimited(KERN_WARNING "ECC: uncorrectable error  2 !!!\n");
+		pr_err("ECC: uncorrectable error 2 !!!\n");
 		temp_nand_ecc_errors[1] += 1 ;
 		return -EIO;
 	}
@@ -435,8 +451,8 @@
 	int eccsteps = nand_device->ecc.steps;
 	uint8_t *p = buf;
 	uint8_t *ecc_code = nand_device->buffers->ecccode;
-	uint8_t ecc_bytes = nand_device->ecc.bytes;
-	uint8_t stat;
+	int ecc_bytes = nand_device->ecc.bytes;
+	int stat;
 	uint8_t *oob = nand_device->oob_poi;
 
 	// lock mutex to prevent simultaneous NAND and NOR access to Comcerto2000 EXP bus
@@ -449,9 +465,10 @@
 		chip->read_buf(mtd, ecc_code, ecc_bytes);
 
 		stat = chip->ecc.correct(mtd, p, oob, NULL);
-		if (stat < 0)
+		if (stat < 0) {
 			mtd->ecc_stats.failed++;
-		else {
+			pr_err("ECC correction failed for page 0x%08x\n", page);
+		} else {
 			int idx = eccsteps;
 			if (idx >= MTD_ECC_STAT_SUBPAGES) {
 				idx = MTD_ECC_STAT_SUBPAGES - 1;
@@ -529,8 +546,7 @@
 	/* Allocate memory for info structure */
 	info = kmalloc(sizeof(struct comcerto_nand_info), GFP_KERNEL);
 	if (!info) {
-		printk(KERN_ERR
-		       "comcerto nand: unable to allocate info structure\n");
+		pr_err("comcerto nand: unable to allocate info structure\n");
 		err = -ENOMEM;
 		goto out;
 	}
@@ -539,8 +555,7 @@
 	/* Allocate memory for MTD device structure */
 	mtd = kmalloc(sizeof(struct mtd_info), GFP_KERNEL);
 	if (!mtd) {
-		printk(KERN_ERR
-		       "comcerto nand: unable to allocate mtd info structure\n");
+		pr_err("comcerto nand: unable to allocate mtd info structure\n");
 		err = -ENOMEM;
 		goto out_info;
 	}
@@ -553,8 +568,7 @@
 	/* Allocate pointer to nand_device data */
 	nand_device = kmalloc(sizeof(struct nand_chip), GFP_KERNEL);
 	if (!nand_device) {
-		printk(KERN_ERR
-		       "comcerto nand: unable to allocate nand chip structure\n");
+		pr_err("comcerto nand: unable to allocate nand chip structure\n");
 		err = -ENOMEM;
 		goto out_mtd;
 	}
@@ -563,19 +577,19 @@
 	/* Link the private data with the MTD structure */
 	mtd->priv = nand_device;
 
-	printk(KERN_INFO "pdev->resource->start = %x, pdev->resource->end = %x\n", pdev->resource->start, pdev->resource->end);
+	pr_info("pdev->resource->start = %x, pdev->resource->end = %x\n", pdev->resource->start, pdev->resource->end);
 
 	/*Map physical address of nand into virtual space */
 	nand_device->IO_ADDR_R = ioremap_nocache(pdev->resource->start, pdev->resource->end - pdev->resource->start + 1);
 	if (nand_device->IO_ADDR_R == NULL) {
-		printk(KERN_ERR "comcerto nand: cannot map nand memory\n");
+		pr_err("comcerto nand: cannot map nand memory\n");
 		err = -EIO;
 		goto out_ior;
 	}
 
 	ecc_base_addr = ioremap(COMCERTO_AXI_EXP_ECC_BASE, 0xFFFF);
 	if (!ecc_base_addr) {
-		printk(KERN_ERR "comcerto nand: cannot map ecc config\n");
+		pr_err("comcerto nand: cannot map ecc config\n");
 		err = -EIO;
 		goto out_ior;
 	}
@@ -583,7 +597,7 @@
 	/* This is the same address to read and write */
 	nand_device->IO_ADDR_W = nand_device->IO_ADDR_R;
 
-	printk(KERN_INFO "nand_probe: %s base: 0x%08x \n", pdev->name, (resource_size_t) nand_device->IO_ADDR_R);
+	pr_info("nand_probe: %s base: 0x%08x \n", pdev->name, (resource_size_t) nand_device->IO_ADDR_R);
 
 	/* Set address of hardware control function */
 	nand_device->cmd_ctrl = comcerto_nand_hwcontrol;
@@ -614,7 +628,7 @@
 		nand_device->ecc.read_page = comcerto_nand_read_page_hwecc;
 		nand_device->ecc.calculate = comcerto_calculate_ecc;
 		nand_device->ecc.correct = comcerto_correct_ecc;
-		printk("hw_syndrome correction %d.\n", mtd->writesize);
+		pr_info("hw_syndrome correction %d.\n", mtd->writesize);
 
 		switch (mtd->writesize) {
 		case 512:
@@ -624,7 +638,7 @@
 			nand_device->ecc.bytes = 42;
 			nand_device->ecc.prepad = 0;
 			nand_device->ecc.postpad = 14;
-#elif defined (CONFIG_NAND_COMCERTO_ECC_8_HW_BCH)
+#elif defined(CONFIG_NAND_COMCERTO_ECC_8_HW_BCH)
 			nand_device->ecc.layout = &comcerto_ecc_info_512_bch;
 			nand_device->ecc.bytes = 14;
 			nand_device->ecc.prepad = 0;
@@ -643,7 +657,7 @@
 			nand_device->ecc.bytes = 42;
 			nand_device->ecc.prepad = 0;
 			nand_device->ecc.postpad = 14;
-#elif CONFIG_NAND_COMCERTO_ECC_8_HW_BCH
+#elif defined(CONFIG_NAND_COMCERTO_ECC_8_HW_BCH)
 			nand_device->ecc.layout = &comcerto_ecc_info_1024_bch;
 			nand_device->ecc.bytes = 14;
 			nand_device->ecc.prepad = 0;
@@ -656,14 +670,14 @@
 #endif
 			break;
 		default:
-			printk(KERN_ERR "Using default values for hw ecc\n");
+			pr_err("Using default values for hw ecc\n");
 			nand_device->ecc.size =  1024;
 #ifdef CONFIG_NAND_COMCERTO_ECC_24_HW_BCH
 			nand_device->ecc.layout = &comcerto_ecc_info_1024_bch;
 			nand_device->ecc.bytes = 42;
 			nand_device->ecc.prepad = 0;
 			nand_device->ecc.postpad = 14;
-#elif CONFIG_NAND_COMCERTO_ECC_8_HW_BCH
+#elif defined(CONFIG_NAND_COMCERTO_ECC_8_HW_BCH)
 			nand_device->ecc.layout = &comcerto_ecc_info_1024_bch;
 			nand_device->ecc.bytes = 14;
 			nand_device->ecc.prepad = 0;
@@ -678,7 +692,7 @@
 		}
 	nand_device->ecc.steps = mtd->writesize / nand_device->ecc.size;
 	if(nand_device->ecc.steps * nand_device->ecc.size != mtd->writesize) {
-		printk(KERN_ERR "Invalid ecc parameters\n");
+		pr_err("Invalid ecc parameters\n");
 		BUG();
 	}
 	nand_device->ecc.total = nand_device->ecc.steps * nand_device->ecc.bytes;
@@ -690,7 +704,7 @@
 	nand_device->bbt_options |= NAND_BBT_USE_FLASH;
 
 	} else {
-		printk("using soft ecc.\n");
+		pr_info("using soft ecc.\n");
 		nand_device->ecc.mode = NAND_ECC_SOFT_BCH;
 	}
 
@@ -699,7 +713,7 @@
 	nand_device->options |= NAND_NO_SUBPAGE_WRITE;
 
 	if(nand_scan_tail(mtd)) {
-		printk(KERN_ERR "nand_scan_tail returned error\n");
+		pr_err("nand_scan_tail returned error\n");
 		err = -ENXIO;
 		goto out_ior;
 	}
@@ -713,7 +727,7 @@
 	err = mtd_device_parse_register(mtd, part_probes, NULL, NULL, 4);
 
 	if (err) {
-                printk(KERN_ERR "Could not parse partitions\n");
+                pr_err("Could not parse partitions\n");
 		return err;
 	}
 
