Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm/fdt If enable-method is missing, try psci



details:   https://anonhg.NetBSD.org/src/rev/4247693a1a73
branches:  trunk
changeset: 972823:4247693a1a73
user:      jmcneill <jmcneill%NetBSD.org@localhost>
date:      Wed Jun 10 19:29:48 2020 +0000

description:
If enable-method is missing, try psci

diffstat:

 sys/arch/arm/fdt/cpu_fdt.c |  29 +++++++++++++++++++----------
 1 files changed, 19 insertions(+), 10 deletions(-)

diffs (64 lines):

diff -r b34aeb79e0e2 -r 4247693a1a73 sys/arch/arm/fdt/cpu_fdt.c
--- a/sys/arch/arm/fdt/cpu_fdt.c        Wed Jun 10 18:53:31 2020 +0000
+++ b/sys/arch/arm/fdt/cpu_fdt.c        Wed Jun 10 19:29:48 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu_fdt.c,v 1.35 2020/02/21 13:15:54 skrll Exp $ */
+/* $NetBSD: cpu_fdt.c,v 1.36 2020/06/10 19:29:48 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -30,7 +30,7 @@
 #include "psci_fdt.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu_fdt.c,v 1.35 2020/02/21 13:15:54 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu_fdt.c,v 1.36 2020/06/10 19:29:48 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -191,6 +191,20 @@
 
 #ifdef MULTIPROCESSOR
 static struct arm_cpu_method *
+arm_fdt_cpu_enable_method_byname(const char *method)
+{
+       __link_set_decl(arm_cpu_methods, struct arm_cpu_method);
+       struct arm_cpu_method * const *acmp;
+
+       __link_set_foreach(acmp, arm_cpu_methods) {
+               if (strcmp(method, (*acmp)->acm_compat) == 0)
+                       return *acmp;
+       }
+
+       return NULL;
+}
+
+static struct arm_cpu_method *
 arm_fdt_cpu_enable_method(int phandle)
 {
        const char *method;
@@ -199,14 +213,7 @@
        if (method == NULL)
                return NULL;
 
-       __link_set_decl(arm_cpu_methods, struct arm_cpu_method);
-       struct arm_cpu_method * const *acmp;
-       __link_set_foreach(acmp, arm_cpu_methods) {
-               if (strcmp(method, (*acmp)->acm_compat) == 0)
-                       return *acmp;
-       }
-
-       return NULL;
+       return arm_fdt_cpu_enable_method_byname(method);
 }
 
 static int
@@ -251,6 +258,8 @@
                if (acm == NULL)
                        acm = arm_fdt_cpu_enable_method(cpus);
                if (acm == NULL)
+                       acm = arm_fdt_cpu_enable_method_byname("psci");
+               if (acm == NULL)
                        continue;
 
                error = arm_fdt_cpu_enable(child, acm);



Home | Main Index | Thread Index | Old Index