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); }
static void flash_access_cleanup_bmc(void) { if(ffsh) ffs_close(ffsh); flash_exit(fl_chip); ast_sf_close(fl_ctrl); close_devs(); }
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; }
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(); }
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; }