xref: /openbmc/u-boot/arch/x86/cpu/queensbay/tnc.c (revision acc2372d)
1 /*
2  * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
3  *
4  * SPDX-License-Identifier:	GPL-2.0+
5  */
6 
7 #include <common.h>
8 #include <asm/io.h>
9 #include <asm/pci.h>
10 #include <asm/post.h>
11 #include <asm/arch/tnc.h>
12 #include <asm/arch/fsp/fsp_support.h>
13 #include <asm/processor.h>
14 
15 static void unprotect_spi_flash(void)
16 {
17 	u32 bc;
18 
19 	bc = pci_read_config32(PCH_LPC_DEV, 0xd8);
20 	bc |= 0x1;	/* unprotect the flash */
21 	pci_write_config32(PCH_LPC_DEV, 0xd8, bc);
22 }
23 
24 int arch_cpu_init(void)
25 {
26 	struct pci_controller *hose;
27 	int ret;
28 
29 	post_code(POST_CPU_INIT);
30 #ifdef CONFIG_SYS_X86_TSC_TIMER
31 	timer_set_base(rdtsc());
32 #endif
33 
34 	ret = x86_cpu_init_f();
35 	if (ret)
36 		return ret;
37 
38 	ret = pci_early_init_hose(&hose);
39 	if (ret)
40 		return ret;
41 
42 	unprotect_spi_flash();
43 
44 	return 0;
45 }
46 
47 int print_cpuinfo(void)
48 {
49 	post_code(POST_CPU_INFO);
50 	return default_print_cpuinfo();
51 }
52 
53 void reset_cpu(ulong addr)
54 {
55 	/* cold reset */
56 	outb(0x06, PORT_RESET);
57 }
58 
59 void board_final_cleanup(void)
60 {
61 	u32 status;
62 
63 	/* call into FspNotify */
64 	debug("Calling into FSP (notify phase INIT_PHASE_BOOT): ");
65 	status = fsp_notify(NULL, INIT_PHASE_BOOT);
66 	if (status != FSP_SUCCESS)
67 		debug("fail, error code %x\n", status);
68 	else
69 		debug("OK\n");
70 
71 	return;
72 }
73