From: Simon Glass Date: Sun, 17 Jan 2016 23:11:24 +0000 (-0700) Subject: x86: ivybridge: Move CPU init code into the driver X-Git-Tag: v2016.03-rc1~114 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9d156b57257cfbf2b5343e5c9cbb4111dee4291f;p=oweals%2Fu-boot.git x86: ivybridge: Move CPU init code into the driver Use the CPU driver's probe() method to perform the CPU init. This will happen automatically when the first CPU is probed. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- diff --git a/arch/x86/cpu/ivybridge/bd82x6x.c b/arch/x86/cpu/ivybridge/bd82x6x.c index c71596d073..149c1d23f1 100644 --- a/arch/x86/cpu/ivybridge/bd82x6x.c +++ b/arch/x86/cpu/ivybridge/bd82x6x.c @@ -61,7 +61,6 @@ static int bd82x6x_probe(struct udevice *dev) { const void *blob = gd->fdt_blob; struct pci_controller *hose; - struct x86_cpu_priv *cpu; int sata_node, gma_node; int ret; @@ -81,11 +80,6 @@ static int bd82x6x_probe(struct udevice *dev) bd82x6x_usb_ehci_init(PCH_EHCI1_DEV); bd82x6x_usb_ehci_init(PCH_EHCI2_DEV); - cpu = calloc(1, sizeof(*cpu)); - if (!cpu) - return -ENOMEM; - model_206ax_init(cpu); - gma_node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_GMA); if (gma_node < 0) { debug("%s: Cannot find GMA node\n", __func__); diff --git a/arch/x86/cpu/ivybridge/model_206ax.c b/arch/x86/cpu/ivybridge/model_206ax.c index 9fa1226b1f..6ab6edec20 100644 --- a/arch/x86/cpu/ivybridge/model_206ax.c +++ b/arch/x86/cpu/ivybridge/model_206ax.c @@ -403,7 +403,7 @@ static void configure_mca(void) static unsigned ehci_debug_addr; #endif -int model_206ax_init(struct x86_cpu_priv *cpu) +static int model_206ax_init(void) { int ret; @@ -480,6 +480,9 @@ static int model_206ax_get_count(struct udevice *dev) static int cpu_x86_model_206ax_probe(struct udevice *dev) { + if (dev->seq == 0) + model_206ax_init(); + return 0; } diff --git a/arch/x86/include/asm/arch-ivybridge/bd82x6x.h b/arch/x86/include/asm/arch-ivybridge/bd82x6x.h index d76cb8dd78..fc7fc6d14b 100644 --- a/arch/x86/include/asm/arch-ivybridge/bd82x6x.h +++ b/arch/x86/include/asm/arch-ivybridge/bd82x6x.h @@ -15,19 +15,4 @@ void bd82x6x_usb_xhci_init(pci_dev_t dev); int gma_func0_init(struct udevice *dev, const void *blob, int node); int bd82x6x_init_extra(void); -/** - * struct x86_cpu_priv - Information about a single CPU - * - * @apic_id: Advanced Programmable Interrupt Controller Identifier, which is - * just a number representing the CPU core - * - * TODO: Move this to driver model once lifecycle is understood - */ -struct x86_cpu_priv { - int apic_id; - int start_err; -}; - -int model_206ax_init(struct x86_cpu_priv *cpu); - #endif