From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 14:10:11 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9A8A1EE4; Fri, 1 Aug 2014 14:10:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7B762252F; Fri, 1 Aug 2014 14:10:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71EABdk012215; Fri, 1 Aug 2014 14:10:11 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71EAB7M012213; Fri, 1 Aug 2014 14:10:11 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201408011410.s71EAB7M012213@svn.freebsd.org> From: Andrew Turner Date: Fri, 1 Aug 2014 14:10:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269382 - in projects/arm64/sys: arm/arm conf X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 14:10:11 -0000 Author: andrew Date: Fri Aug 1 14:10:10 2014 New Revision: 269382 URL: http://svnweb.freebsd.org/changeset/base/269382 Log: Alos use the GICv2 driver on arm64. No interrupts are working yet as we are still missing the code to handle the correct exception. Modified: projects/arm64/sys/arm/arm/gic.c projects/arm64/sys/conf/files.arm64 Modified: projects/arm64/sys/arm/arm/gic.c ============================================================================== --- projects/arm64/sys/arm/arm/gic.c Fri Aug 1 13:54:58 2014 (r269381) +++ projects/arm64/sys/arm/arm/gic.c Fri Aug 1 14:10:10 2014 (r269382) @@ -47,7 +47,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#if 0 #include +#endif #include #include @@ -104,6 +106,12 @@ struct arm_gic_softc { uint32_t nirqs; }; +static struct ofw_compat_data compat_data[] = { + { "arm,cortex-a9-gic", 1 }, + { "arm,gic", 1 }, + { NULL, 0 }, +}; + static struct resource_spec arm_gic_spec[] = { { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Distributor registers */ { SYS_RES_MEMORY, 1, RF_ACTIVE }, /* CPU Interrupt Intf. registers */ @@ -132,12 +140,14 @@ arm_gic_probe(device_t dev) if (!ofw_bus_status_okay(dev)) return (ENXIO); - if (!ofw_bus_is_compatible(dev, "arm,gic")) + if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data) return (ENXIO); + device_set_desc(dev, "ARM Generic Interrupt Controller"); return (BUS_PROBE_DEFAULT); } +#if 0 void gic_init_secondary(void) { @@ -167,6 +177,7 @@ gic_init_secondary(void) /* Activate IRQ 29, ie private timer IRQ*/ gic_d_write_4(GICD_ISENABLER(29 >> 5), (1UL << (29 & 0x1F))); } +#endif static int arm_gic_attach(device_t dev) @@ -206,9 +217,11 @@ arm_gic_attach(device_t dev) sc->nirqs = gic_d_read_4(GICD_TYPER); sc->nirqs = 32 * ((sc->nirqs & 0x1f) + 1); +#if 0 /* Set up function pointers */ arm_post_filter = gic_post_filter; arm_config_irq = gic_config_irq; +#endif icciidr = gic_c_read_4(GICC_IIDR); device_printf(dev,"pn 0x%x, arch 0x%x, rev 0x%x, implementer 0x%x sc->nirqs %u\n", @@ -262,6 +275,7 @@ static driver_t arm_gic_driver = { static devclass_t arm_gic_devclass; DRIVER_MODULE(gic, simplebus, arm_gic_driver, arm_gic_devclass, 0, 0); +DRIVER_MODULE(gic, ofwbus, arm_gic_driver, arm_gic_devclass, 0, 0); static void gic_post_filter(void *arg) @@ -271,6 +285,7 @@ gic_post_filter(void *arg) gic_c_write_4(GICC_EOIR, irq); } +#if 0 int arm_get_next_irq(int last_irq) { @@ -311,6 +326,7 @@ arm_unmask_irq(uintptr_t nb) gic_d_write_4(GICD_ISENABLER(nb >> 5), (1UL << (nb & 0x1F))); } +#endif static int gic_config_irq(int irq, enum intr_trigger trig, Modified: projects/arm64/sys/conf/files.arm64 ============================================================================== --- projects/arm64/sys/conf/files.arm64 Fri Aug 1 13:54:58 2014 (r269381) +++ projects/arm64/sys/conf/files.arm64 Fri Aug 1 14:10:10 2014 (r269382) @@ -1,5 +1,6 @@ arm/arm/devmap.c standard +arm/arm/gic.c standard arm64/arm64/autoconf.c standard arm64/arm64/bcopy.c standard arm64/arm64/bus_machdep.c standard