svn commit: r283057 - in head/sys: arm/amlogic/aml8726 arm/conf conf
Andrew Turner
andrew at FreeBSD.org
Mon May 18 11:04:10 UTC 2015
Author: andrew
Date: Mon May 18 11:04:07 2015
New Revision: 283057
URL: https://svnweb.freebsd.org/changeset/base/283057
Log:
Clean up the Amlogic interrupt controller driver to handle the case where
we have both the Amlogic pic and a GIC. This may be the case in some
configurations.
Differential Revision: https://reviews.freebsd.org/D2432
Submitted by: John Wehle <john at feith.com>
Modified:
head/sys/arm/amlogic/aml8726/aml8726_machdep.c
head/sys/arm/amlogic/aml8726/aml8726_pic.c
head/sys/arm/amlogic/aml8726/files.aml8726
head/sys/arm/conf/AML8726
head/sys/arm/conf/ODROIDC1
head/sys/arm/conf/VSATV102
head/sys/conf/options.arm
Modified: head/sys/arm/amlogic/aml8726/aml8726_machdep.c
==============================================================================
--- head/sys/arm/amlogic/aml8726/aml8726_machdep.c Mon May 18 11:02:43 2015 (r283056)
+++ head/sys/arm/amlogic/aml8726/aml8726_machdep.c Mon May 18 11:04:07 2015 (r283057)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <machine/bus.h>
#include <machine/cpufunc.h>
#include <machine/devmap.h>
+#include <machine/intr.h>
#include <machine/machdep.h>
#include <machine/platform.h>
@@ -181,43 +182,31 @@ struct fdt_fixup_entry fdt_fixup_table[]
{ NULL, NULL }
};
+#ifndef DEV_GIC
static int
fdt_pic_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
int *pol)
{
/*
- * The single core chips have just an Amlogic PIC. However the
- * multi core chips also have a GIC.
+ * The single core chips have just an Amlogic PIC.
*/
-#ifdef SMP
- if (!fdt_is_compatible_strict(node, "arm,cortex-a9-gic"))
-#else
if (!fdt_is_compatible_strict(node, "amlogic,aml8726-pic"))
-#endif
return (ENXIO);
*interrupt = fdt32_to_cpu(intr[1]);
*trig = INTR_TRIGGER_EDGE;
*pol = INTR_POLARITY_HIGH;
- switch (*interrupt) {
- case 30: /* INT_USB_A */
- case 31: /* INT_USB_B */
- *trig = INTR_TRIGGER_LEVEL;
- break;
- default:
- break;
- }
-
-#ifdef SMP
- *interrupt += 32;
-#endif
-
return (0);
}
+#endif
fdt_pic_decode_t fdt_pic_table[] = {
+#ifdef DEV_GIC
+ &gic_decode_fdt,
+#else
&fdt_pic_decode_ic,
+#endif
NULL
};
Modified: head/sys/arm/amlogic/aml8726/aml8726_pic.c
==============================================================================
--- head/sys/arm/amlogic/aml8726/aml8726_pic.c Mon May 18 11:02:43 2015 (r283056)
+++ head/sys/arm/amlogic/aml8726/aml8726_pic.c Mon May 18 11:04:07 2015 (r283057)
@@ -169,7 +169,7 @@ aml8726_pic_attach(device_t dev)
CSR_WRITE_4(sc, AML_PIC_0_FIRQ_SEL + i * 16, 0);
}
-#ifndef SMP
+#ifndef DEV_GIC
arm_post_filter = aml8726_pic_eoi;
#else
device_printf(dev, "disabled in favor of gic\n");
@@ -207,7 +207,7 @@ static devclass_t aml8726_pic_devclass;
EARLY_DRIVER_MODULE(pic, simplebus, aml8726_pic_driver, aml8726_pic_devclass,
0, 0, BUS_PASS_INTERRUPT);
-#ifndef SMP
+#ifndef DEV_GIC
int
arm_get_next_irq(int last)
{
Modified: head/sys/arm/amlogic/aml8726/files.aml8726
==============================================================================
--- head/sys/arm/amlogic/aml8726/files.aml8726 Mon May 18 11:02:43 2015 (r283056)
+++ head/sys/arm/amlogic/aml8726/files.aml8726 Mon May 18 11:04:07 2015 (r283057)
@@ -13,7 +13,7 @@ arm/amlogic/aml8726/aml8726_mp.c option
arm/amlogic/aml8726/aml8726_identsoc.c standard
arm/amlogic/aml8726/aml8726_ccm.c standard
arm/amlogic/aml8726/aml8726_clkmsr.c standard
-arm/amlogic/aml8726/aml8726_pic.c standard
+arm/amlogic/aml8726/aml8726_pic.c optional aml_pic
arm/amlogic/aml8726/aml8726_rtc.c standard
arm/amlogic/aml8726/aml8726_timer.c standard
arm/amlogic/aml8726/aml8726_wdt.c standard
Modified: head/sys/arm/conf/AML8726
==============================================================================
--- head/sys/arm/conf/AML8726 Mon May 18 11:02:43 2015 (r283056)
+++ head/sys/arm/conf/AML8726 Mon May 18 11:04:07 2015 (r283057)
@@ -27,7 +27,6 @@ options HZ=100
options SCHED_ULE # ULE scheduler
options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed.
options LINUX_BOOT_ABI
-options SMP # Enable multiple cores
# Debugging
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
@@ -52,6 +51,9 @@ options WITNESS_SKIPSPIN # Don't run wi
#options BOOTP_NFSV3
#options BOOTP_WIRED_TO=axe0
+# Interrupt controller
+device aml_pic
+
# MMC/SD/SDIO Card slot support
device mmc # mmc/sd bus
device mmcsd # mmc/sd flash cards
@@ -59,9 +61,6 @@ device mmcsd # mmc/sd flash cards
# Boot device is 2nd slice on MMC/SD card
options ROOTDEVNAME=\"ufs:mmcsd0s2\"
-# Interrupt controller
-device gic
-
# GPIO
device gpio
device gpioled
Modified: head/sys/arm/conf/ODROIDC1
==============================================================================
--- head/sys/arm/conf/ODROIDC1 Mon May 18 11:02:43 2015 (r283056)
+++ head/sys/arm/conf/ODROIDC1 Mon May 18 11:04:07 2015 (r283057)
@@ -22,5 +22,8 @@
include "AML8726"
ident ODROIDC1
+# Interrupt controller
+device gic
+
options FDT_DTB_STATIC
makeoptions FDT_DTS_FILE=odroidc1.dts
Modified: head/sys/arm/conf/VSATV102
==============================================================================
--- head/sys/arm/conf/VSATV102 Mon May 18 11:02:43 2015 (r283056)
+++ head/sys/arm/conf/VSATV102 Mon May 18 11:04:07 2015 (r283057)
@@ -22,5 +22,8 @@
include "AML8726"
ident VSATV102
+# Interrupt controller
+device gic
+
options FDT_DTB_STATIC
makeoptions FDT_DTS_FILE=vsatv102-m6.dts
Modified: head/sys/conf/options.arm
==============================================================================
--- head/sys/conf/options.arm Mon May 18 11:02:43 2015 (r283056)
+++ head/sys/conf/options.arm Mon May 18 11:04:07 2015 (r283057)
@@ -21,6 +21,7 @@ CPU_XSCALE_81342 opt_global.h
CPU_XSCALE_IXP425 opt_global.h
CPU_XSCALE_IXP435 opt_global.h
CPU_XSCALE_PXA2X0 opt_global.h
+DEV_GIC opt_global.h
FLASHADDR opt_global.h
GIC_DEFAULT_ICFGR_INIT opt_global.h
IPI_IRQ_START opt_smp.h
More information about the svn-src-head
mailing list