From 31f7e9e9cffd447e132a64eadc5fc736555ea587 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Thu, 31 Dec 2020 20:55:23 +0800 Subject: broadwell: broadwell_refcode_main --- src/soc/intel/broadwell/refcode/main.c | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/soc/intel/broadwell/refcode/main.c (limited to 'src/soc/intel/broadwell/refcode/main.c') diff --git a/src/soc/intel/broadwell/refcode/main.c b/src/soc/intel/broadwell/refcode/main.c new file mode 100644 index 0000000000..7e2e234c5e --- /dev/null +++ b/src/soc/intel/broadwell/refcode/main.c @@ -0,0 +1,44 @@ +#include "usb.h" +#include "refcode.h" + +struct _MRC_PEI_SERVICES; +typedef struct _MRC_PEI_SERVICES MRC_PEI_SERVICES; +struct _refcode_struct; +typedef struct _refcode_struct refcode_struct; + +MRC_PEI_SERVICES ** refcode_init(struct pei_data *); +int InstallPchInitPpi(int, MRC_PEI_SERVICES **); +int init_system_agent(int, MRC_PEI_SERVICES **); +int PchInitialize(int, MRC_PEI_SERVICES **); + +static inline void* +get_usb_policy(refcode_struct *r) +{ + return (void*)r + 644; +} + +static inline uint8_t +get_revision(refcode_struct *r) +{ + return *(uint8_t*)(r); +} + +int broadwell_refcode_main(struct pei_data *pei_data) +{ + MRC_PEI_SERVICES **pei_pointer; + refcode_struct *refcode_struct_ptr; + + pei_pointer = refcode_init(pei_data); + if (pei_pointer == NULL) + return -1; + + InstallPchInitPpi(0, pei_pointer); + init_system_agent(0, pei_pointer); + PchInitialize(0, pei_pointer); + refcode_locate_ppi(&refcode_ppi_guid, 0, 0, (void**)(&refcode_struct_ptr)); + PchStartUsbInit(get_usb_policy(refcode_struct_ptr), + pei_data->ehcibar, pei_data->xhcibar, + get_revision(refcode_struct_ptr)); + finalize_usb(); + return 0; +} -- cgit v1.2.3