From owner-svn-src-head@FreeBSD.ORG Wed Apr 24 01:36:36 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 30DB84B3; Wed, 24 Apr 2013 01:36:36 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 131A1183E; Wed, 24 Apr 2013 01:36:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r3O1aZDJ091115; Wed, 24 Apr 2013 01:36:35 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r3O1aZ0U091112; Wed, 24 Apr 2013 01:36:35 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201304240136.r3O1aZ0U091112@svn.freebsd.org> From: Rui Paulo Date: Wed, 24 Apr 2013 01:36:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r249826 - head/sys/powerpc/wii X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Apr 2013 01:36:36 -0000 Author: rpaulo Date: Wed Apr 24 01:36:35 2013 New Revision: 249826 URL: http://svnweb.freebsd.org/changeset/base/249826 Log: Handle the IRQ for the reset button. Modified: head/sys/powerpc/wii/wii_bus.c head/sys/powerpc/wii/wii_pic.c head/sys/powerpc/wii/wii_picreg.h Modified: head/sys/powerpc/wii/wii_bus.c ============================================================================== --- head/sys/powerpc/wii/wii_bus.c Wed Apr 24 01:20:10 2013 (r249825) +++ head/sys/powerpc/wii/wii_bus.c Wed Apr 24 01:36:35 2013 (r249826) @@ -157,7 +157,7 @@ wiibus_attach(device_t self) /* Nintendo PIC */ dinfo = malloc(sizeof(*dinfo), M_WIIBUS, M_WAITOK | M_ZERO); wiibus_init_device_resources(&sc->sc_rman, dinfo, 0, WIIPIC_REG_ADDR, - WIIPIC_REG_LEN, 0); + WIIPIC_REG_LEN, 1); cdev = BUS_ADD_CHILD(self, 0, "wiipic", 0); device_set_ivars(cdev, dinfo); Modified: head/sys/powerpc/wii/wii_pic.c ============================================================================== --- head/sys/powerpc/wii/wii_pic.c Wed Apr 24 01:20:10 2013 (r249825) +++ head/sys/powerpc/wii/wii_pic.c Wed Apr 24 01:36:35 2013 (r249826) @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -51,6 +52,7 @@ static void wiipic_enable(device_t, unsi static void wiipic_eoi(device_t, unsigned int); static void wiipic_mask(device_t, unsigned int); static void wiipic_unmask(device_t, unsigned int); +static void wiipic_intr(void *); struct wiipic_softc { device_t sc_dev; @@ -58,6 +60,9 @@ struct wiipic_softc { bus_space_tag_t sc_bt; bus_space_handle_t sc_bh; int sc_rrid; + int sc_irqid; + struct resource *sc_irq; + void *sc_irqctx; int sc_vector[WIIPIC_NIRQ]; }; @@ -146,6 +151,19 @@ wiipic_attach(device_t dev) powerpc_register_pic(dev, 0, WIIPIC_NIRQ, 0, FALSE); + /* + * Setup the interrupt handler. + */ + sc->sc_irqid = 0; + sc->sc_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->sc_irqid, + RF_ACTIVE); + if (sc->sc_irq == NULL) { + device_printf(dev, "could not alloc IRQ resource\n"); + return (ENXIO); + } + bus_setup_intr(dev, sc->sc_irq, INTR_TYPE_MISC | INTR_MPSAFE, + NULL, wiipic_intr, sc, &sc->sc_irqctx); + return (0); } @@ -210,3 +228,17 @@ wiipic_unmask(device_t dev, unsigned int imr |= (1 << irq); wiipic_imr_write(sc, imr); } + +/* + * Reset button interrupt. + */ +static void +wiipic_intr(void *xsc) +{ + struct wiipic_softc *sc; + + sc = (struct wiipic_softc *)xsc; + if (wiipic_icr_read(sc) & WIIPIC_RBS) + shutdown_nice(RB_AUTOBOOT); +} + Modified: head/sys/powerpc/wii/wii_picreg.h ============================================================================== --- head/sys/powerpc/wii/wii_picreg.h Wed Apr 24 01:20:10 2013 (r249825) +++ head/sys/powerpc/wii/wii_picreg.h Wed Apr 24 01:36:35 2013 (r249826) @@ -30,9 +30,10 @@ #define _POWERPC_WII_WII_PICREG_H #define WIIPIC_REG_ADDR 0x0c003000 -#define WIIPIC_REG_LEN 0x08 +#define WIIPIC_REG_LEN 0x28 #define WIIPIC_ICR 0x00 +#define WIIPIC_RBS 0x10000 #define WIIPIC_IMR 0x04 #define WIIPIC_RESET 0x24