1*1021af4dSSimon Glass /* 2*1021af4dSSimon Glass * Copyright (C) 2013, Intel Corporation 3*1021af4dSSimon Glass * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com> 4*1021af4dSSimon Glass * 5*1021af4dSSimon Glass * SPDX-License-Identifier: Intel 6*1021af4dSSimon Glass */ 7*1021af4dSSimon Glass 8*1021af4dSSimon Glass #ifndef __FSP_API_H__ 9*1021af4dSSimon Glass #define __FSP_API_H__ 10*1021af4dSSimon Glass 11*1021af4dSSimon Glass /* 12*1021af4dSSimon Glass * FspInit continuation function prototype. 13*1021af4dSSimon Glass * Control will be returned to this callback function after FspInit API call. 14*1021af4dSSimon Glass */ 15*1021af4dSSimon Glass typedef void (*fsp_continuation_f)(u32 status, void *hob_list); 16*1021af4dSSimon Glass 17*1021af4dSSimon Glass struct fsp_init_params { 18*1021af4dSSimon Glass /* Non-volatile storage buffer pointer */ 19*1021af4dSSimon Glass void *nvs_buf; 20*1021af4dSSimon Glass /* Runtime buffer pointer */ 21*1021af4dSSimon Glass void *rt_buf; 22*1021af4dSSimon Glass /* Continuation function address */ 23*1021af4dSSimon Glass fsp_continuation_f continuation; 24*1021af4dSSimon Glass }; 25*1021af4dSSimon Glass 26*1021af4dSSimon Glass struct common_buf { 27*1021af4dSSimon Glass /* 28*1021af4dSSimon Glass * Stack top pointer used by the bootloader. The new stack frame will be 29*1021af4dSSimon Glass * set up at this location after FspInit API call. 30*1021af4dSSimon Glass */ 31*1021af4dSSimon Glass u32 *stack_top; 32*1021af4dSSimon Glass u32 boot_mode; /* Current system boot mode */ 33*1021af4dSSimon Glass void *upd_data; /* User platform configuraiton data region */ 34*1021af4dSSimon Glass u32 reserved[7]; /* Reserved */ 35*1021af4dSSimon Glass }; 36*1021af4dSSimon Glass 37*1021af4dSSimon Glass enum fsp_phase { 38*1021af4dSSimon Glass /* Notification code for post PCI enuermation */ 39*1021af4dSSimon Glass INIT_PHASE_PCI = 0x20, 40*1021af4dSSimon Glass /* Notification code before transfering control to the payload */ 41*1021af4dSSimon Glass INIT_PHASE_BOOT = 0x40 42*1021af4dSSimon Glass }; 43*1021af4dSSimon Glass 44*1021af4dSSimon Glass struct fsp_notify_params { 45*1021af4dSSimon Glass /* Notification phase used for NotifyPhase API */ 46*1021af4dSSimon Glass enum fsp_phase phase; 47*1021af4dSSimon Glass }; 48*1021af4dSSimon Glass 49*1021af4dSSimon Glass /* FspInit API function prototype */ 50*1021af4dSSimon Glass typedef u32 (*fsp_init_f)(struct fsp_init_params *params); 51*1021af4dSSimon Glass 52*1021af4dSSimon Glass /* FspNotify API function prototype */ 53*1021af4dSSimon Glass typedef u32 (*fsp_notify_f)(struct fsp_notify_params *params); 54*1021af4dSSimon Glass 55*1021af4dSSimon Glass #endif 56