From owner-p4-projects@FreeBSD.ORG Wed Nov 8 19:51:07 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CC5A616A417; Wed, 8 Nov 2006 19:51:07 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A715616A40F for ; Wed, 8 Nov 2006 19:51:07 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 367E243D6A for ; Wed, 8 Nov 2006 19:51:04 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id kA8Jp4HB054246 for ; Wed, 8 Nov 2006 19:51:04 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id kA8Jp3KE054238 for perforce@freebsd.org; Wed, 8 Nov 2006 19:51:03 GMT (envelope-from sam@freebsd.org) Date: Wed, 8 Nov 2006 19:51:03 GMT Message-Id: <200611081951.kA8Jp3KE054238@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 109547 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Nov 2006 19:51:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=109547 Change 109547 by sam@sam_ebb on 2006/11/08 19:50:09 o fix teardown_intr to handle multiple irqs o change setup_intr to work like teardown--compute the mask of irqs and touch intr_enabled only once Affected files ... .. //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425.c#16 edit Differences ... ==== //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425.c#16 (text+ko) ==== @@ -301,6 +301,7 @@ struct resource *ires, int flags, driver_intr_t *intr, void *arg, void **cookiep) { + uint32_t mask; int i; if (flags & INTR_TYPE_TTY) { @@ -313,8 +314,11 @@ } BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, intr, arg, cookiep); + + mask = 0; for (i = rman_get_start(ires); i <= rman_get_end(ires); i++) - intr_enabled |= 1 << i; + mask |= 1 << i; + intr_enabled |= mask; ixp425_set_intrmask(); return (0); @@ -324,9 +328,15 @@ ixp425_teardown_intr(device_t dev, device_t child, struct resource *res, void *cookie) { + uint32_t mask; + int i; - intr_enabled &= ~ 1 << rman_get_start(res); + mask = 0; + for (i = rman_get_start(res); i <= rman_get_end(res); i++) + mask |= 1 << i; + intr_enabled &= ~mask; ixp425_set_intrmask(); + return (BUS_TEARDOWN_INTR(device_get_parent(dev), child, res, cookie)); }