static int test_erase_block(const char *val, struct kernel_param *kp)
{
	int normal_block_seq = 0;
	int i;
	int err;

	/* Erase eraseblock */
	printk(KERN_INFO"%s: erasing block\n", __func__);

	for (i = 0; i < ebcnt; ++i) {
		if (bbt[i])
			continue;
		if (i == target_block)
			break;
		normal_block_seq++;
	}

	err = lge_erase_block(normal_block_seq);
	if (err) {
		printk(KERN_INFO"%s: erased %u block fail\n", __func__, i);
		return err;
	}

	printk(KERN_INFO"%s: erased %u block\n", __func__, i);

	return 0;
}
static int test_erase_block(void)
{
	int i;
	int err;

	/* Erase eraseblock */
	printk(KERN_INFO"%s: erasing block\n", __func__);

	for (i = 0; i < ebcnt; i++) {
		if (bbt[i])
			continue;
		else
			break;
	}

#ifdef LGE_RETRY_MTD_DIRECT_ACCESS
	err = lge_retry_erase_block(i);
#else
	err = lge_erase_block(i);
#endif
	if (err) {
		printk(KERN_INFO"%s: erased %u block fail\n", __func__, i);
		return err;
	}

	printk(KERN_INFO"%s: erased %u block\n", __func__, i);

	return 0;
}
boolean userDataBackUpPartitionErase(void )
{
	int mtd_op_result ;
	int retry_count=3;
	do{
		msleep(100);
		retry_count--;
		mtd_op_result = lge_erase_block(srd_bytes_pos_in_emmc, (size_t)(SRD_1MBYTE_AREA*SRD_FIRST_AREA_INPARTITION));
		if (retry_count==0){
		 	break;
		}
	 }while(mtd_op_result != (SRD_1MBYTE_AREA*SRD_FIRST_AREA_INPARTITION));
	 
	// srd_bytes_pos_in_emmc+0x400000  for  MDM 
	  mtd_op_result = lge_erase_block(srd_bytes_pos_in_emmc+0x400000, (size_t)(SRD_1MBYTE_AREA));
	 if(mtd_op_result != (SRD_1MBYTE_AREA*SRD_FIRST_AREA_INPARTITION))
	 {
          printk(KERN_ERR "[Testmode]lge_write_block, error num = %d \n", mtd_op_result);
         //  rsp_pkt->header.err_code = TEST_FAIL_S;        
         return FALSE;
        }
	 
	  
	 //현재 1mbyte 만 지움. ..
#if 0
	int i;  
  	int start_blk;
  	int end_blk;
  
	if(userDataBackupFlashInit()==FALSE)
		return FALSE;

	start_blk = flash_nand_partition_start_block(MIBIB_DIDBACKUP_PARTI_NAME);
	end_blk = flash_nand_partition_end_block(MIBIB_DIDBACKUP_PARTI_NAME);

	for (i=start_blk; i<= end_blk; i++)		
	{
		if(nand_device->bad_block_check(nand_device, i) == FS_DEVICE_OK)
		{
		    if(nand_device->erase_block(nand_device,i) != FS_DEVICE_DONE)
			  return FALSE;
		}		
	}
#endif 
	return TRUE;
}	
int lge_retry_erase_block(int ebnum)
{
	int retry_cnt = 0;
	int err = 0;

	for(retry_cnt = 0; retry_cnt < 5; retry_cnt++)
	{
		err = lge_erase_block(ebnum);
		if(err != 0)
		{
			printk(KERN_INFO"%s: error %d while erasing EB %d, retry count %d\n", __func__, err, ebnum, retry_cnt);
			msleep(100);
			continue;
		}
		else
		{
			printk(KERN_INFO"%s: success while erasing EB %d, retry count %d\n", __func__, ebnum, retry_cnt);
			break;
		}
	}

	return err;
}