Пример #1
0
static void
flash_access_cleanup_bmc(void)
{
	if(ffsh)
		ffs_close(ffsh);
	flash_exit(fl_chip);
	ast_sf_close(fl_ctrl);
	close_devs();
}
Пример #2
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();
}
Пример #3
0
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;
}