From owner-svn-src-user@FreeBSD.ORG Wed Jun 20 12:22:55 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1209E106564A; Wed, 20 Jun 2012 12:22:55 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EF0288FC18; Wed, 20 Jun 2012 12:22:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q5KCMsfQ041689; Wed, 20 Jun 2012 12:22:54 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q5KCMs6E041672; Wed, 20 Jun 2012 12:22:54 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201206201222.q5KCMs6E041672@svn.freebsd.org> From: Jakub Wojciech Klama Date: Wed, 20 Jun 2012 12:22:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237301 - in user/jceel/soc2012_armv6/sys: arm/arm arm/at91 arm/conf arm/econa arm/include arm/mv arm/s3c2xx0 arm/sa11x0 arm/tegra arm/ti arm/xscale/i80321 arm/xscale/pxa dev/fdt X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2012 12:22:55 -0000 Author: jceel Date: Wed Jun 20 12:22:54 2012 New Revision: 237301 URL: http://svn.freebsd.org/changeset/base/237301 Log: Bring arm ports using old interrupt routing code back to work. Modified: user/jceel/soc2012_armv6/sys/arm/arm/intr.c user/jceel/soc2012_armv6/sys/arm/arm/nexus.c user/jceel/soc2012_armv6/sys/arm/at91/files.at91 user/jceel/soc2012_armv6/sys/arm/conf/EA3250 user/jceel/soc2012_armv6/sys/arm/econa/files.econa user/jceel/soc2012_armv6/sys/arm/include/fdt.h user/jceel/soc2012_armv6/sys/arm/include/intr.h user/jceel/soc2012_armv6/sys/arm/mv/files.mv user/jceel/soc2012_armv6/sys/arm/s3c2xx0/files.s3c2xx0 user/jceel/soc2012_armv6/sys/arm/sa11x0/files.sa11x0 user/jceel/soc2012_armv6/sys/arm/tegra/files.tegra2 user/jceel/soc2012_armv6/sys/arm/ti/files.ti user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80219 user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80321 user/jceel/soc2012_armv6/sys/arm/xscale/pxa/files.pxa user/jceel/soc2012_armv6/sys/dev/fdt/fdtbus.c Modified: user/jceel/soc2012_armv6/sys/arm/arm/intr.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/arm/intr.c Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/arm/intr.c Wed Jun 20 12:22:54 2012 (r237301) @@ -61,6 +61,15 @@ void arm_handler_execute(struct trapfram void (*arm_post_filter)(void *) = NULL; +const char * +arm_describe_irq(int irq) +{ + static char buffer[8]; + + sprintf(buffer, "%d", irq); + return (buffer); +} + void arm_setup_irqhandler(const char *name, driver_filter_t *filt, void (*hand)(void*), void *arg, int irq, int flags, void **cookiep) Modified: user/jceel/soc2012_armv6/sys/arm/arm/nexus.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/arm/nexus.c Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/arm/nexus.c Wed Jun 20 12:22:54 2012 (r237301) @@ -72,7 +72,9 @@ struct nexus_device { #define DEVTONX(dev) ((struct nexus_device *)device_get_ivars(dev)) static struct rman mem_rman; +#if defined(ARM_INTRNG) static device_t nexus_dev; +#endif static int nexus_probe(device_t); static int nexus_attach(device_t); @@ -85,11 +87,13 @@ static int nexus_activate_resource(devic static int nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep); static int nexus_teardown_intr(device_t, device_t, struct resource *, void *); +#if defined(ARM_INTRNG) static void nexus_pic_config(device_t, int, enum intr_trigger, enum intr_polarity); static void nexus_pic_mask(device_t, int); static void nexus_pic_unmask(device_t, int); static void nexus_pic_eoi(device_t, int); void arm_handler_execute(struct trapframe *tf, int irqnb); +#endif static device_method_t nexus_methods[] = { /* Device interface */ @@ -102,11 +106,13 @@ static device_method_t nexus_methods[] = DEVMETHOD(bus_activate_resource, nexus_activate_resource), DEVMETHOD(bus_setup_intr, nexus_setup_intr), DEVMETHOD(bus_teardown_intr, nexus_teardown_intr), +#if defined(ARM_INTRNG) /* Interrupt controller interface */ DEVMETHOD(pic_config, nexus_pic_config), DEVMETHOD(pic_mask, nexus_pic_mask), DEVMETHOD(pic_unmask, nexus_pic_unmask), DEVMETHOD(pic_eoi, nexus_pic_eoi), +#endif { 0, 0 } }; @@ -133,8 +139,13 @@ nexus_setup_intr(device_t dev, device_t if ((rman_get_flags(res) & RF_SHAREABLE) == 0) flags |= INTR_EXCL; +#if defined(ARM_INTRNG) arm_setup_irqhandler(child, filt, intr, arg, rman_get_start(res), flags, cookiep); +#else + arm_setup_irqhandler(device_get_nameunit(child), + filt, intr, arg, rman_get_start(res), flags, cookiep); +#endif return (0); } @@ -156,9 +167,11 @@ nexus_attach(device_t dev) if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0)) panic("nexus_probe mem_rman"); +#if defined(ARM_INTRNG) /* Register core interrupt controller */ nexus_dev = dev; arm_register_pic(dev); +#endif /* * First, deal with the children we know about already @@ -266,6 +279,7 @@ nexus_activate_resource(device_t bus, de return (rman_activate_resource(r)); } +#if defined(ARM_INTRNG) static void nexus_pic_config(device_t bus, int irq, enum intr_trigger trig, enum intr_polarity pol) @@ -297,5 +311,6 @@ arm_handler_execute(struct trapframe *tf /* Dispatch root interrupt from core */ arm_dispatch_irq(nexus_dev, tf, 0); } +#endif DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0); Modified: user/jceel/soc2012_armv6/sys/arm/at91/files.at91 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/at91/files.at91 Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/at91/files.at91 Wed Jun 20 12:22:54 2012 (r237301) @@ -1,6 +1,7 @@ # $FreeBSD$ arm/arm/cpufunc_asm_arm9.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/at91/at91_machdep.c standard arm/at91/at91.c standard arm/at91/at91_cfata.c optional at91_cfata Modified: user/jceel/soc2012_armv6/sys/arm/conf/EA3250 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/conf/EA3250 Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/conf/EA3250 Wed Jun 20 12:22:54 2012 (r237301) @@ -26,6 +26,7 @@ options BOOTP_NFSROOT options BOOTP_NFSV3 options BOOTP_WIRED_TO=lpe0 options ARM_INTRNG +options VERBOSE_INIT_ARM #options ROOTDEVNAME=\"ufs:/dev/da0a\" Modified: user/jceel/soc2012_armv6/sys/arm/econa/files.econa ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/econa/files.econa Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/econa/files.econa Wed Jun 20 12:22:54 2012 (r237301) @@ -7,6 +7,7 @@ arm/econa/uart_bus_ec.c optional uart arm/econa/uart_cpu_ec.c optional uart dev/uart/uart_dev_ns8250.c optional uart arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/arm/bus_space_generic.c standard arm/econa/ehci_ebus.c standard ehci arm/econa/ohci_ec.c standard ohci Modified: user/jceel/soc2012_armv6/sys/arm/include/fdt.h ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/include/fdt.h Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/include/fdt.h Wed Jun 20 12:22:54 2012 (r237301) @@ -41,6 +41,8 @@ #include #include +#if defined(ARM_INTRNG) + /* Max interrupt number */ #define FDT_INTR_MAX (0xffff) @@ -48,6 +50,17 @@ #define FDT_MAP_IRQ(node, pin) (arm_fdt_map_irq(node, pin)) #define FDT_DESCRIBE_IRQ(irq) (arm_describe_irq(irq)) +#else + +/* Max interrupt number */ +#define FDT_INTR_MAX NIRQ + +/* Map phandle/intpin pair to global IRQ number */ +#define FDT_MAP_IRQ(node, pin) (pin) +#define FDT_DESCRIBE_IRQ(irq) (arm_describe_irq(irq)) + +#endif /* ARM_INTRNG */ + /* * Bus space tag. XXX endianess info needs to be derived from the blob. */ Modified: user/jceel/soc2012_armv6/sys/arm/include/intr.h ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/include/intr.h Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/include/intr.h Wed Jun 20 12:22:54 2012 (r237301) @@ -56,7 +56,6 @@ struct arm_intr_data { }; int arm_fdt_map_irq(phandle_t ic, int irq); -const char *arm_describe_irq(int irq); void arm_register_pic(device_t dev); void arm_unregister_pic(device_t dev); void arm_dispatch_irq(device_t dev, struct trapframe *tf, int irq); @@ -93,6 +92,7 @@ extern void (*arm_post_filter)(void *); #endif /* !ARM_INTRNG */ +const char *arm_describe_irq(int irq); void gic_init_secondary(void); #endif /* _MACHINE_INTR_H */ Modified: user/jceel/soc2012_armv6/sys/arm/mv/files.mv ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/mv/files.mv Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/mv/files.mv Wed Jun 20 12:22:54 2012 (r237301) @@ -21,6 +21,7 @@ arm/arm/cpufunc_asm_armv7.S standard arm/arm/cpufunc_asm_sheeva.S standard arm/arm/cpufunc_asm_pj4b.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/mv/bus_space.c standard arm/mv/common.c standard Modified: user/jceel/soc2012_armv6/sys/arm/s3c2xx0/files.s3c2xx0 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/s3c2xx0/files.s3c2xx0 Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/s3c2xx0/files.s3c2xx0 Wed Jun 20 12:22:54 2012 (r237301) @@ -1,6 +1,7 @@ # $FreeBSD$ arm/arm/cpufunc_asm_arm9.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/s3c2xx0/board_ln2410sbc.c optional board_ln2410sbc arm/s3c2xx0/s3c24x0_rtc.c standard arm/s3c2xx0/s3c24x0_machdep.c standard Modified: user/jceel/soc2012_armv6/sys/arm/sa11x0/files.sa11x0 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/sa11x0/files.sa11x0 Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/sa11x0/files.sa11x0 Wed Jun 20 12:22:54 2012 (r237301) @@ -2,6 +2,7 @@ arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_sa1.S standard arm/arm/cpufunc_asm_sa11x0.S standard +arm/arm/intr.c standard arm/sa11x0/assabet_machdep.c optional assabet arm/sa11x0/sa11x0.c optional saip arm/sa11x0/sa11x0_ost.c optional saip Modified: user/jceel/soc2012_armv6/sys/arm/tegra/files.tegra2 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/tegra/files.tegra2 Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/tegra/files.tegra2 Wed Jun 20 12:22:54 2012 (r237301) @@ -6,6 +6,7 @@ arm/arm/cpufunc_asm_armv5.S standard arm/arm/cpufunc_asm_arm11.S standard arm/arm/cpufunc_asm_armv7.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/arm/gic.c standard arm/arm/mpcore_timer.c standard Modified: user/jceel/soc2012_armv6/sys/arm/ti/files.ti ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/ti/files.ti Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/ti/files.ti Wed Jun 20 12:22:54 2012 (r237301) @@ -9,6 +9,7 @@ arm/arm/cpufunc_asm_arm10.S standard arm/arm/cpufunc_asm_arm11.S standard arm/arm/cpufunc_asm_armv7.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/ti/bus_space.c standard arm/ti/common.c standard Modified: user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80219 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80219 Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80219 Wed Jun 20 12:22:54 2012 (r237301) @@ -5,6 +5,7 @@ arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_xscale.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/xscale/i80321/i80321.c standard arm/xscale/i80321/i80321_dma.c optional dma arm/xscale/i80321/i80321_mcu.c standard Modified: user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80321 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80321 Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/xscale/i80321/files.i80321 Wed Jun 20 12:22:54 2012 (r237301) @@ -2,6 +2,7 @@ arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_xscale.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/xscale/i80321/i80321.c standard arm/xscale/i80321/i80321_aau.c optional aau arm/xscale/i80321/i80321_dma.c optional dma Modified: user/jceel/soc2012_armv6/sys/arm/xscale/pxa/files.pxa ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/pxa/files.pxa Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/arm/xscale/pxa/files.pxa Wed Jun 20 12:22:54 2012 (r237301) @@ -3,6 +3,7 @@ arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_xscale.S standard arm/arm/irq_dispatch.S standard +arm/arm/intr.c standard arm/xscale/pxa/pxa_gpio.c standard arm/xscale/pxa/pxa_icu.c standard Modified: user/jceel/soc2012_armv6/sys/dev/fdt/fdtbus.c ============================================================================== --- user/jceel/soc2012_armv6/sys/dev/fdt/fdtbus.c Wed Jun 20 11:53:04 2012 (r237300) +++ user/jceel/soc2012_armv6/sys/dev/fdt/fdtbus.c Wed Jun 20 12:22:54 2012 (r237301) @@ -599,8 +599,13 @@ fdtbus_setup_intr(device_t bus, device_t cpu_establish_hardintr(device_get_nameunit(child), filter, ihand, arg, rman_get_start(res), flags, cookiep); #elif defined(__arm__) +#if defined(ARM_INTRNG) arm_setup_irqhandler(child, filter, ihand, arg, rman_get_start(res), flags, cookiep); +#else + arm_setup_irqhandler(device_get_nameunit(child), + filter, ihand, arg, rman_get_start(res), flags, cookiep); +#endif /* ARM_INTRNG */ err = 0; #endif