blob: a009c14bd9b75a268fc61b562079b6a0759a34d5 [file] [log] [blame]
Simon Glass3a1a18f2015-01-27 22:13:47 -07001/*
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 <mmc.h>
9#include <pci_ids.h>
Bin Mengfe3fbd32015-07-30 03:49:18 -070010#include <asm/irq.h>
Bin Meng8b185042015-10-11 21:37:43 -070011#include <asm/mrccache.h>
Simon Glass3a1a18f2015-01-27 22:13:47 -070012#include <asm/post.h>
13
14static struct pci_device_id mmc_supported[] = {
15 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VALLEYVIEW_SDIO },
16 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VALLEYVIEW_SDCARD },
17};
18
19int cpu_mmc_init(bd_t *bis)
20{
Simon Glass3a1a18f2015-01-27 22:13:47 -070021 return pci_mmc_init("ValleyView SDHCI", mmc_supported,
22 ARRAY_SIZE(mmc_supported));
23}
24
Simon Glassb4302582015-08-04 12:34:02 -060025#ifndef CONFIG_EFI_APP
Simon Glass3a1a18f2015-01-27 22:13:47 -070026int arch_cpu_init(void)
27{
28 int ret;
29
30 post_code(POST_CPU_INIT);
31#ifdef CONFIG_SYS_X86_TSC_TIMER
32 timer_set_base(rdtsc());
33#endif
34
35 ret = x86_cpu_init_f();
36 if (ret)
37 return ret;
38
39 return 0;
40}
Bin Mengfe3fbd32015-07-30 03:49:18 -070041
42int arch_misc_init(void)
43{
Simon Glassc8896ee2015-08-10 07:05:12 -060044 if (!ll_boot_init())
45 return 0;
Simon Glass46f8efe2015-08-10 07:05:10 -060046
Bin Meng8b185042015-10-11 21:37:43 -070047#ifdef CONFIG_ENABLE_MRC_CACHE
48 /*
49 * We intend not to check any return value here, as even MRC cache
50 * is not saved successfully, it is not a severe error that will
51 * prevent system from continuing to boot.
52 */
53 mrccache_save();
54#endif
55
Bin Mengfa6af7b2015-08-20 06:40:22 -070056 return pirq_init();
Bin Mengfe3fbd32015-07-30 03:49:18 -070057}
Bin Meng8b185042015-10-11 21:37:43 -070058
59int reserve_arch(void)
60{
61#ifdef CONFIG_ENABLE_MRC_CACHE
62 return mrccache_reserve();
63#else
64 return 0;
65#endif
66}
Simon Glassb4302582015-08-04 12:34:02 -060067#endif
Bin Meng74e56d12015-10-11 21:37:45 -070068
69void reset_cpu(ulong addr)
70{
71 /* cold reset */
72 x86_full_reset();
73}