Merge branch 'master' of git://git.denx.de/u-boot-spi
[oweals/u-boot.git] / arch / x86 / cpu / queensbay / tnc.c
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 }