예제 #1
0
void sig_handle_proc(int sig)
{
	SYS_WARNING("Flash Rcv Signo=%d\r\n",sig);
	IsFlashSysQuit = 1;
	flash_exit(&global_flash_private_handle);
	exit(0);
}
예제 #2
0
static void
flash_access_cleanup_bmc(void)
{
	if(ffsh)
		ffs_close(ffsh);
	flash_exit(fl_chip);
	ast_sf_close(fl_ctrl);
	close_devs();
}
예제 #3
0
int main(int argc, char **argv)
{
	memset(&global_flash_private_handle, 0x00, sizeof(global_flash_private_handle));

	if ( flash_init(&global_flash_private_handle) != succeed_type_succeed)
	{
		SYS_ERROR("flash_init failed.\r\n");
		return 0;
	}

	
	//将flash数据拷贝到共享缓冲里
	if ( flash_para_load(&global_flash_private_handle) !=  succeed_type_succeed)
	{
		SYS_ERROR("flash_para_load failed.\r\n");
		return 0;
	}
	//创建flash管理线程 定时检测flash操作的更新状态
	if (pthread_create(&UpdateThread, NULL, flash_updatethread_func, (void *)&global_flash_private_handle))
	{
		SYS_ERROR("Failed to create flash_updatethread_func thread\n");
		return -1;
	}

	SYS_INFO("Enter flash_manager func.\r\n");
	while( 0 ==  IsFlashSysQuit)
	{
		if ( poll( &(global_flash_private_handle.polltimeout), global_flash_private_handle.active_fdcount , -1 ) > 0 )
		{
			SYS_WARNING("POLL event found.\r\n");
			if ( global_flash_private_handle.polltimeout[0].revents )
			{
				//do UNIX recv event.
				flash_unix(&global_flash_private_handle);
			}
			if ( global_flash_private_handle.polltimeout[1].revents )
			{
			}
			flash_poll_init(&global_flash_private_handle);
		}
	}
	flash_exit(&global_flash_private_handle);
	return 0;
}
예제 #4
0
static void
flash_access_cleanup_pnor(void)
{
	/* Re-lock flash */
	if(need_relock)
		set_wrprotect(true);

	if(ffsh)
		ffs_close(ffsh);
	flash_exit(fl_chip);
#ifdef __powerpc__
	if(using_sfc)
		sfc_close(fl_ctrl);
	else
		ast_sf_close(fl_ctrl);
#else
	ast_sf_close(fl_ctrl);
#endif
	close_devs();
}
예제 #5
0
파일: pnor.c 프로젝트: pridhiviraj/skiboot
int pnor_init(void)
{
	struct spi_flash_ctrl *pnor_ctrl;
	struct blocklevel_device *bl = NULL;
	int rc;

	/* Open controller and flash. If the LPC->AHB doesn't point to
	 * the PNOR flash base we assume we're booting from BMC system
	 * memory (or some other place setup by the BMC to support LPC
	 * FW reads & writes). */
	if (ast_is_ahb_lpc_pnor())
		rc = ast_sf_open(AST_SF_TYPE_PNOR, &pnor_ctrl);
	else {
		printf("PLAT: Memboot detected\n");
		rc = ast_sf_open(AST_SF_TYPE_MEM, &pnor_ctrl);
	}
	if (rc) {
		prerror("PLAT: Failed to open PNOR flash controller\n");
		goto fail;
	}

	rc = flash_init(pnor_ctrl, &bl, NULL);
	if (rc) {
		prerror("PLAT: Failed to open init PNOR driver\n");
		goto fail;
	}

	rc = flash_register(bl);
	if (!rc)
		return 0;

 fail:
	if (bl)
		flash_exit(bl);
	if (pnor_ctrl)
		ast_sf_close(pnor_ctrl);

	return rc;
}