xref: /openbmc/u-boot/arch/x86/include/asm/fsp/fsp_api.h (revision 82196cf3)
11021af4dSSimon Glass /*
21021af4dSSimon Glass  * Copyright (C) 2013, Intel Corporation
31021af4dSSimon Glass  * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
41021af4dSSimon Glass  *
51021af4dSSimon Glass  * SPDX-License-Identifier:	Intel
61021af4dSSimon Glass  */
71021af4dSSimon Glass 
81021af4dSSimon Glass #ifndef __FSP_API_H__
91021af4dSSimon Glass #define __FSP_API_H__
101021af4dSSimon Glass 
11*82196cf3SSimon Glass #include <linux/linkage.h>
12*82196cf3SSimon Glass 
131021af4dSSimon Glass /*
141021af4dSSimon Glass  * FspInit continuation function prototype.
151021af4dSSimon Glass  * Control will be returned to this callback function after FspInit API call.
161021af4dSSimon Glass  */
171021af4dSSimon Glass typedef void (*fsp_continuation_f)(u32 status, void *hob_list);
181021af4dSSimon Glass 
191021af4dSSimon Glass struct fsp_init_params {
201021af4dSSimon Glass 	/* Non-volatile storage buffer pointer */
211021af4dSSimon Glass 	void			*nvs_buf;
221021af4dSSimon Glass 	/* Runtime buffer pointer */
231021af4dSSimon Glass 	void			*rt_buf;
241021af4dSSimon Glass 	/* Continuation function address */
251021af4dSSimon Glass 	fsp_continuation_f	continuation;
261021af4dSSimon Glass };
271021af4dSSimon Glass 
281021af4dSSimon Glass struct common_buf {
291021af4dSSimon Glass 	/*
301021af4dSSimon Glass 	 * Stack top pointer used by the bootloader. The new stack frame will be
311021af4dSSimon Glass 	 * set up at this location after FspInit API call.
321021af4dSSimon Glass 	 */
331021af4dSSimon Glass 	u32	*stack_top;
341021af4dSSimon Glass 	u32	boot_mode;	/* Current system boot mode */
351021af4dSSimon Glass 	void	*upd_data;	/* User platform configuraiton data region */
361021af4dSSimon Glass 	u32	reserved[7];	/* Reserved */
371021af4dSSimon Glass };
381021af4dSSimon Glass 
391021af4dSSimon Glass enum fsp_phase {
401021af4dSSimon Glass 	/* Notification code for post PCI enuermation */
411021af4dSSimon Glass 	INIT_PHASE_PCI	= 0x20,
421021af4dSSimon Glass 	/* Notification code before transfering control to the payload */
431021af4dSSimon Glass 	INIT_PHASE_BOOT	= 0x40
441021af4dSSimon Glass };
451021af4dSSimon Glass 
461021af4dSSimon Glass struct fsp_notify_params {
471021af4dSSimon Glass 	/* Notification phase used for NotifyPhase API */
481021af4dSSimon Glass 	enum fsp_phase	phase;
491021af4dSSimon Glass };
501021af4dSSimon Glass 
511021af4dSSimon Glass /* FspInit API function prototype */
52*82196cf3SSimon Glass typedef asmlinkage u32 (*fsp_init_f)(struct fsp_init_params *params);
531021af4dSSimon Glass 
541021af4dSSimon Glass /* FspNotify API function prototype */
55*82196cf3SSimon Glass typedef asmlinkage u32 (*fsp_notify_f)(struct fsp_notify_params *params);
561021af4dSSimon Glass 
571021af4dSSimon Glass #endif
58