/*
************************************************************************************************************
*
*                                             function
*
*    函数名称:
*
*    参数列表:
*
*    返回值  :
*
*    说明    :
*
*
************************************************************************************************************
*/
__s32 update_flash_write(void *pbuf, __u32 len)
{
	__s32	  ret;

	if(android_format == ANDROID_FORMAT_UNKONW)
	{
		ret = unsparse_probe((char *)pbuf, len, flash_start_sector);
		if(ret == -1)
		{
			android_format = ANDROID_FORMAT_BAD;
		}
		else
		{
			android_format = ANDROID_FORMAT_DETECT;
		}
	}
	if(ANDROID_FORMAT_BAD == android_format)
	{
		if(private_type == 1)
		{
			env_dram_write(pbuf, len);
		}
		else
		{
			update_flash_write_ext(pbuf, len);
		}
	}
	else
	{
		//unsparse_dram_write(pbuf, len);
		unsparse_direct_write(pbuf, len);
	}

    return 0;
}
/*
************************************************************************************************************
*
*                                             function
*
*    函数名称:
*
*    参数列表:
*
*    返回值  :
*
*    说明    :
*
*
************************************************************************************************************
*/
int private_date_restore(int part_size)
{
	__inf("private part status=%d\n", private_exist);
	if(private_exist)
	{
		if(private_flash_flash_size <= part_size)
		{
			if(!update_flash_write_ext(private_flash_dram_base, private_flash_flash_size))
			{
				return 0;
			}
			else
			{
				__inf("update flash private err: write private data error\n");
			}
		}
		else
		{
			__inf("update flash private err: data size %d is larger than part size %d\n", private_flash_flash_size, part_size);
		}
	}
	else
	{
		__inf("sprite update info: no part named private need to be restore\n");
	}

	return -1;
}