x86: Move qemu CPU fixup function into its own file
[oweals/u-boot.git] / arch / x86 / cpu / mp_init.c
index fefbf8f72829b5e9a65dc8de363990bec3c007fd..7b09f90cd518e449cd59635bdc996429cf1b0700 100644 (file)
@@ -418,69 +418,6 @@ static int init_bsp(struct udevice **devp)
        return 0;
 }
 
-#ifdef CONFIG_QFW
-static int qemu_cpu_fixup(void)
-{
-       int ret;
-       int cpu_num;
-       int cpu_online;
-       struct udevice *dev, *pdev;
-       struct cpu_platdata *plat;
-       char *cpu;
-
-       /* first we need to find '/cpus' */
-       for (device_find_first_child(dm_root(), &pdev);
-            pdev;
-            device_find_next_child(&pdev)) {
-               if (!strcmp(pdev->name, "cpus"))
-                       break;
-       }
-       if (!pdev) {
-               printf("unable to find cpus device\n");
-               return -ENODEV;
-       }
-
-       /* calculate cpus that are already bound */
-       cpu_num = 0;
-       for (uclass_find_first_device(UCLASS_CPU, &dev);
-            dev;
-            uclass_find_next_device(&dev)) {
-               cpu_num++;
-       }
-
-       /* get actual cpu number */
-       cpu_online = qemu_fwcfg_online_cpus();
-       if (cpu_online < 0) {
-               printf("unable to get online cpu number: %d\n", cpu_online);
-               return cpu_online;
-       }
-
-       /* bind addtional cpus */
-       dev = NULL;
-       for (; cpu_num < cpu_online; cpu_num++) {
-               /*
-                * allocate device name here as device_bind_driver() does
-                * not copy device name, 8 bytes are enough for
-                * sizeof("cpu@") + 3 digits cpu number + '\0'
-                */
-               cpu = malloc(8);
-               if (!cpu) {
-                       printf("unable to allocate device name\n");
-                       return -ENOMEM;
-               }
-               sprintf(cpu, "cpu@%d", cpu_num);
-               ret = device_bind_driver(pdev, "cpu_qemu", cpu, &dev);
-               if (ret) {
-                       printf("binding cpu@%d failed: %d\n", cpu_num, ret);
-                       return ret;
-               }
-               plat = dev_get_parent_platdata(dev);
-               plat->cpu_id = cpu_num;
-       }
-       return 0;
-}
-#endif
-
 int mp_init(struct mp_params *p)
 {
        int num_aps;
@@ -494,11 +431,11 @@ int mp_init(struct mp_params *p)
        if (ret)
                return ret;
 
-#ifdef CONFIG_QFW
-       ret = qemu_cpu_fixup();
-       if (ret)
-               return ret;
-#endif
+       if (IS_ENABLED(CONFIG_QFW)) {
+               ret = qemu_cpu_fixup();
+               if (ret)
+                       return ret;
+       }
 
        ret = init_bsp(&cpu);
        if (ret) {