svn commit: r323490 - head/sys/arm/ti

Olivier Houchard cognet at FreeBSD.org
Tue Sep 12 10:43:04 UTC 2017


Author: cognet
Date: Tue Sep 12 10:43:02 2017
New Revision: 323490
URL: https://svnweb.freebsd.org/changeset/base/323490

Log:
  Some devices come with the same name as TI devices, so we can't rely on the
  "probe" method of those drivers to mean we're on e TI SoC. Introduce a new
  function, ti_soc_is_supported(), and use it to be sure we're really a TI
  system.
  
  PR:	222250

Modified:
  head/sys/arm/ti/ti_cpuid.c
  head/sys/arm/ti/ti_cpuid.h
  head/sys/arm/ti/ti_scm.c

Modified: head/sys/arm/ti/ti_cpuid.c
==============================================================================
--- head/sys/arm/ti/ti_cpuid.c	Tue Sep 12 06:34:02 2017	(r323489)
+++ head/sys/arm/ti/ti_cpuid.c	Tue Sep 12 10:43:02 2017	(r323490)
@@ -272,11 +272,7 @@ am335x_get_revision(void)
 static void
 ti_cpu_ident(void *dummy)
 {
-	phandle_t root;
-
-	root = OF_finddevice("/");
-	if (!ofw_bus_node_is_compatible(root, "ti,omap4") &&
-	    !ofw_bus_node_is_compatible(root, "ti,am33xx"))
+	if (!ti_soc_is_supported())
 		return;
 	switch(ti_chip()) {
 	case CHIP_OMAP_4:

Modified: head/sys/arm/ti/ti_cpuid.h
==============================================================================
--- head/sys/arm/ti/ti_cpuid.h	Tue Sep 12 06:34:02 2017	(r323489)
+++ head/sys/arm/ti/ti_cpuid.h	Tue Sep 12 10:43:02 2017	(r323490)
@@ -80,4 +80,10 @@ static __inline int ti_chip(void)
 
 uint32_t ti_revision(void);
 
+static __inline bool ti_soc_is_supported(void)
+{
+
+	return (_ti_chip != -1);
+}
+
 #endif  /* _TI_CPUID_H_ */

Modified: head/sys/arm/ti/ti_scm.c
==============================================================================
--- head/sys/arm/ti/ti_scm.c	Tue Sep 12 06:34:02 2017	(r323489)
+++ head/sys/arm/ti/ti_scm.c	Tue Sep 12 10:43:02 2017	(r323490)
@@ -67,6 +67,7 @@ __FBSDID("$FreeBSD$");
 #include <dev/fdt/fdt_pinctrl.h>
 
 #include "ti_scm.h"
+#include "ti_cpuid.h"
 
 static struct resource_spec ti_scm_res_spec[] = {
 	{ SYS_RES_MEMORY,	0,	RF_ACTIVE },	/* Control memory window */
@@ -86,6 +87,10 @@ static struct ti_scm_softc *ti_scm_sc;
 static int
 ti_scm_probe(device_t dev)
 {
+
+	if (!ti_soc_is_supported())
+		return (ENXIO);
+
 	if (!ofw_bus_status_okay(dev))
 		return (ENXIO);
 


More information about the svn-src-head mailing list