BSP_S32 BSP_IPF_ST_402()
	{
		s32 result = 0;
		u32 reg_table_size =0;
		
		result = ipf_drx_bak_reg();
		if(IPF_SUCCESS != result)
		{
			bsp_trace(BSP_LOG_LEVEL_ERROR, BSP_MODU_IPF, "BSP_IPF_ST_402 backup reg fail!\n");
			return IPF_ERROR;
		}
		
		/*ʹÓÃsyssc reset ipf£¬¸ù¾Ýmengbiao£¬Õâ»áʹËùÓмĴæÆ÷Çå0*/



		ipf_drx_restore_reg();
		
		reg_table_size = sizeof(g_ipf_setting_table_test);
		result = compare_reg_table(g_ipf_setting_table_test, (u32*)IPF_PWRCTL_INFO_ADDR, reg_table_size);
		if(IPF_SUCCESS != result)
		{
			bsp_trace(BSP_LOG_LEVEL_ERROR, BSP_MODU_IPF, "BSP_IPF_ST_402 restore g_ipf_setting_table_test fail!\n");
			return IPF_ERROR;
		}

		reg_table_size = sizeof(g_ipf_adq_rptr_table_test);
		result = compare_reg_table(g_ipf_adq_rptr_table_test, (u32*)IPF_PWRCTL_ADQ_WPTR_INFO_ADDR, reg_table_size);
		if(IPF_SUCCESS != result)
		{
			bsp_trace(BSP_LOG_LEVEL_ERROR, BSP_MODU_IPF, "BSP_IPF_ST_402 restore g_ipf_setting_table_test fail!\n");
			return IPF_ERROR;
		}

		reg_table_size = sizeof(g_ipf_adq_wptr_chctrl_table_test);		
		result = compare_reg_table(g_ipf_adq_wptr_chctrl_table_test, (u32*)IPF_PWRCTL_ADQ_RPTR_CHCTRL_ADDR, reg_table_size);
		if(IPF_SUCCESS != result)
		{
			bsp_trace(BSP_LOG_LEVEL_ERROR, BSP_MODU_IPF, "BSP_IPF_ST_402 restore g_ipf_setting_table_test fail!\n");
			return IPF_ERROR;
		}


		
		return IPF_SUCCESS;
	}
	/*Check of ipf filter restore success or not test*/
	BSP_S32 BSP_IPF_ST_403()
	{
	    s32 result = 0;
		    
		result = ipf_drx_bak_reg();
		if(IPF_SUCCESS != result)
		{
			bsp_trace(BSP_LOG_LEVEL_ERROR, BSP_MODU_IPF, "BSP_IPF_ST_402 backup reg fail!\n");
			return IPF_ERROR;
		}
		
		ipf_drx_restore_reg();


		return check_filter_restore_status();

	}
/*各模块填写时,注意suspend顺序与resume顺序相反*/
static s32 enter_suspend_and_resume(u32 pm_msg)
{
	s32 ret = 0;
	pm_suspend_flag = 0;
    pm_resume_flag = 0;
	if(PMSG_SUSPEND==pm_msg){
		/*可维可测,记录进入suspend总次数*/
		dpm_debug[DPM_BUTTON][0]++;
		/*本分支回调各设备的suspend回调函数,顺序往下加*/
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER1);
		ret=tem_protect_suspend();
		if(ret !=0)
		{
			pm_suspend_flag = 1;
			dpm_debug[DPM_TEM][0] +=1;
			goto end;
		}
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER2);
		ret=bsp_socp_suspend();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER3);
		if(ret !=0)
		{
			pm_suspend_flag = 1;
			dpm_debug[DPM_SOCP][0] +=1;
			goto tem_resume;
		}
		bsp_ipc_suspend();
		bsp_amon_suspend();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER4);
		(void)uart_suspend_port();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER5);
		ret = ipf_drx_bak_reg();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER6);
		if(ret !=0)
		{
			pm_suspend_flag = 1;
			dpm_debug[DPM_IPF][0] +=1;
			goto uart_resume;
		}
        ret = bsp_pmu_suspend();
	    writel(bsp_get_slice_value(), DPM_SRAM_TIMER7);
        if(ret != 0)
        {
            pm_suspend_flag = 1;
            dpm_debug[DPM_PMU][0] +=1;
            goto ipf_resume;
        }
        bsp_wdt_suspend(0);

	}
	else if(PMSG_RESUME==pm_msg){
		dpm_debug[DPM_BUTTON][1]++;/*可维可测,记录进入resume总次数*/
		/*本分支回调各设备的resume回调函数,顺序往上加*/
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER8);
        ret = bsp_pmu_resume();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER9);
        if(ret != 0)
        {
            pm_resume_flag = 1;
            dpm_debug[DPM_PMU][1] +=1;
            goto resume;
        }
	ipf_resume:
		ipf_drx_restore_reg();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER10);
    uart_resume:
		(void)uart_resume_port();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER11);
		bsp_amon_resume();
		bsp_ipc_resume();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER12);
		bsp_socp_resume();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER13);
	tem_resume:
		tem_protect_resume();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER14);
		bsp_hkadc_resume();
		writel(bsp_get_slice_value(), DPM_SRAM_TIMER15);
		bsp_wdt_resume();
	}
	end:
	if(PMSG_SUSPEND==pm_msg)
	{
		if(0==pm_suspend_flag)
			return DPM_OK;
		else
			return DPM_ERROR;
	}
    resume:
	if(PMSG_RESUME==pm_msg)
	{
        if(0==pm_resume_flag)
			return DPM_OK;
		else
			return DPM_ERROR;
	}
	return DPM_OK;
}