svn commit: r308965 - head/sys/arm/arm
Andrew Turner
andrew at FreeBSD.org
Tue Nov 22 09:39:32 UTC 2016
Author: andrew
Date: Tue Nov 22 09:39:31 2016
New Revision: 308965
URL: https://svnweb.freebsd.org/changeset/base/308965
Log:
Split out the FDT parts of the pmu driver to make way for adding ACPI
support.
Obtained from: ABT Systems Ltd
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/arm/arm/pmu.c
Modified: head/sys/arm/arm/pmu.c
==============================================================================
--- head/sys/arm/arm/pmu.c Tue Nov 22 09:37:31 2016 (r308964)
+++ head/sys/arm/arm/pmu.c Tue Nov 22 09:39:31 2016 (r308965)
@@ -36,6 +36,7 @@
__FBSDID("$FreeBSD$");
#include "opt_hwpmc_hooks.h"
+#include "opt_platform.h"
#include <sys/param.h>
#include <sys/systm.h>
@@ -49,9 +50,11 @@ __FBSDID("$FreeBSD$");
#include <sys/pmc.h>
#include <sys/pmckern.h>
+#ifdef FDT
#include <dev/ofw/openfirm.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
+#endif
#include <machine/bus.h>
#include <machine/cpu.h>
@@ -69,22 +72,6 @@ struct pmu_softc {
void *ih[MAX_RLEN];
};
-static struct ofw_compat_data compat_data[] = {
- {"arm,armv8-pmuv3", 1},
- {"arm,cortex-a17-pmu", 1},
- {"arm,cortex-a15-pmu", 1},
- {"arm,cortex-a12-pmu", 1},
- {"arm,cortex-a9-pmu", 1},
- {"arm,cortex-a8-pmu", 1},
- {"arm,cortex-a7-pmu", 1},
- {"arm,cortex-a5-pmu", 1},
- {"arm,arm11mpcore-pmu", 1},
- {"arm,arm1176-pmu", 1},
- {"arm,arm1136-pmu", 1},
- {"qcom,krait-pmu", 1},
- {NULL, 0}
-};
-
static struct resource_spec pmu_spec[] = {
{ SYS_RES_IRQ, 0, RF_ACTIVE },
/* We don't currently handle pmu events, other than on cpu 0 */
@@ -144,21 +131,6 @@ pmu_intr(void *arg)
}
static int
-pmu_probe(device_t dev)
-{
-
- if (!ofw_bus_status_okay(dev))
- return (ENXIO);
-
- if (ofw_bus_search_compatible(dev, compat_data)->ocd_data != 0) {
- device_set_desc(dev, "Performance Monitoring Unit");
- return (BUS_PROBE_DEFAULT);
- }
-
- return (ENXIO);
-}
-
-static int
pmu_attach(device_t dev)
{
struct pmu_softc *sc;
@@ -206,18 +178,51 @@ pmu_attach(device_t dev)
return (0);
}
-static device_method_t pmu_methods[] = {
- DEVMETHOD(device_probe, pmu_probe),
+#ifdef FDT
+static struct ofw_compat_data compat_data[] = {
+ {"arm,armv8-pmuv3", 1},
+ {"arm,cortex-a17-pmu", 1},
+ {"arm,cortex-a15-pmu", 1},
+ {"arm,cortex-a12-pmu", 1},
+ {"arm,cortex-a9-pmu", 1},
+ {"arm,cortex-a8-pmu", 1},
+ {"arm,cortex-a7-pmu", 1},
+ {"arm,cortex-a5-pmu", 1},
+ {"arm,arm11mpcore-pmu", 1},
+ {"arm,arm1176-pmu", 1},
+ {"arm,arm1136-pmu", 1},
+ {"qcom,krait-pmu", 1},
+ {NULL, 0}
+};
+
+static int
+pmu_fdt_probe(device_t dev)
+{
+
+ if (!ofw_bus_status_okay(dev))
+ return (ENXIO);
+
+ if (ofw_bus_search_compatible(dev, compat_data)->ocd_data != 0) {
+ device_set_desc(dev, "Performance Monitoring Unit");
+ return (BUS_PROBE_DEFAULT);
+ }
+
+ return (ENXIO);
+}
+
+static device_method_t pmu_fdt_methods[] = {
+ DEVMETHOD(device_probe, pmu_fdt_probe),
DEVMETHOD(device_attach, pmu_attach),
{ 0, 0 }
};
-static driver_t pmu_driver = {
+static driver_t pmu_fdt_driver = {
"pmu",
- pmu_methods,
+ pmu_fdt_methods,
sizeof(struct pmu_softc),
};
-static devclass_t pmu_devclass;
+static devclass_t pmu_fdt_devclass;
-DRIVER_MODULE(pmu, simplebus, pmu_driver, pmu_devclass, 0, 0);
+DRIVER_MODULE(pmu, simplebus, pmu_fdt_driver, pmu_fdt_devclass, 0, 0);
+#endif
More information about the svn-src-all
mailing list