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