From patchwork Wed Apr 18 15:30:43 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 7935 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id D428623E49 for ; Wed, 18 Apr 2012 15:31:16 +0000 (UTC) Received: from mail-gy0-f180.google.com (mail-gy0-f180.google.com [209.85.160.180]) by fiordland.canonical.com (Postfix) with ESMTP id 72B2CA1809D for ; Wed, 18 Apr 2012 15:31:16 +0000 (UTC) Received: by ghbz12 with SMTP id z12so4627608ghb.11 for ; Wed, 18 Apr 2012 08:31:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:from:to:cc :subject:date:message-id:x-mailer:mime-version:content-type :x-gm-message-state; bh=/WLV2KZ3Xi69X0iYu2UF5IuqSYWmGJaUW/B1/dDAsYk=; b=gmH/BhA52J7z4b+pS/rX7zumVV3Njqrr8rZpKiJmb/7qJkQztnAn3WthrtYT/C06sM y5Gq741oSjbvU1VtwdcNazuuT2U2+lPTrJIJlFU1FwTd566RzAKiIB/oFgz8kXo322oX F69aFv2zscsvbmxLL2/iJNVSpbu5bSxWiGZUuRtoFMGVEWmno8GeBH96FWolaU0hnls0 xPSLBmgbdEfPBQtBZZLwL8NAA1Jx4RH69CPV9dzeoQYH0IPZQ61BDtYckOPmbs+4nmmU 5yMTaTvHSlyDq1ZbjmYL8mNRho5whFAZCsp3eiQT/vNoMPrDNnJ5pGyIq5Ml9Rvr6Gx+ 2WWw== Received: by 10.50.194.163 with SMTP id hx3mr3224086igc.49.1334763075676; Wed, 18 Apr 2012 08:31:15 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.231.137.198 with SMTP id x6csp225257ibt; Wed, 18 Apr 2012 08:31:14 -0700 (PDT) Received: by 10.14.127.139 with SMTP id d11mr457953eei.74.1334763073841; Wed, 18 Apr 2012 08:31:13 -0700 (PDT) Received: from eu1sys200aog103.obsmtp.com (eu1sys200aog103.obsmtp.com. [207.126.144.115]) by mx.google.com with SMTP id m42si7062210eeo.76.2012.04.18.08.31.06 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 18 Apr 2012 08:31:13 -0700 (PDT) Received-SPF: neutral (google.com: 207.126.144.115 is neither permitted nor denied by best guess record for domain of linus.walleij@stericsson.com) client-ip=207.126.144.115; Authentication-Results: mx.google.com; spf=neutral (google.com: 207.126.144.115 is neither permitted nor denied by best guess record for domain of linus.walleij@stericsson.com) smtp.mail=linus.walleij@stericsson.com Received: from beta.dmz-ap.st.com ([138.198.100.35]) (using TLSv1) by eu1sys200aob103.postini.com ([207.126.147.11]) with SMTP ID DSNKT47eL4JLX7VT/iIvHKIYlJZ8q39JYX8A@postini.com; Wed, 18 Apr 2012 15:31:11 UTC Received: from zeta.dmz-ap.st.com (ns6.st.com [138.198.234.13]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 0FD27B2; Wed, 18 Apr 2012 15:22:29 +0000 (GMT) Received: from relay1.stm.gmessaging.net (unknown [10.230.100.17]) by zeta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 774E7119A; Wed, 18 Apr 2012 15:30:50 +0000 (GMT) Received: from exdcvycastm003.EQ1STM.local (alteon-source-exch [10.230.100.61]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (Client CN "exdcvycastm003", Issuer "exdcvycastm003" (not verified)) by relay1.stm.gmessaging.net (Postfix) with ESMTPS id 9B47E24C075; Wed, 18 Apr 2012 17:30:41 +0200 (CEST) Received: from steludxu4075.lud.stericsson.com (10.230.100.153) by smtp.stericsson.com (10.230.100.1) with Microsoft SMTP Server (TLS) id 8.3.83.0; Wed, 18 Apr 2012 17:30:49 +0200 From: Linus Walleij To: Cc: Linus Walleij , Jamie Iles , Will Deacon , Grant Likely , Rob Herring , Russell King Subject: [PATCH 1/2] ARM: VIC: respect list of valid sources Date: Wed, 18 Apr 2012 17:30:43 +0200 Message-ID: <1334763043-19304-1-git-send-email-linus.walleij@stericsson.com> X-Mailer: git-send-email 1.7.9.2 MIME-Version: 1.0 X-Gm-Message-State: ALoCoQmTYC7qsinxcMLrBnyhel2jhAJ+aIUy1hGiuJ0oua0VLXmgYP5wbBUq5Ov+3B84QsGmBEvW From: Linus Walleij The current IRQ domain implementation in the VIC allocates 32 interrupts for each VIC instance no matter whether the controller actually use all the IRQs or not. Alter this so we only allocate a domain up until the last IRQ marked valid. Cc: Jamie Iles Cc: Will Deacon Cc: Grant Likely Cc: Rob Herring Cc: Russell King Signed-off-by: Linus Walleij --- arch/arm/common/vic.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c index 7e288f9..c558a3e 100644 --- a/arch/arm/common/vic.c +++ b/arch/arm/common/vic.c @@ -168,6 +168,7 @@ late_initcall(vic_pm_init); * vic_register() - Register a VIC. * @base: The base address of the VIC. * @irq: The base IRQ for the VIC. + * @valid_sources: bitmask of valid interrupts * @resume_sources: bitmask of interrupts allowed for resume sources. * @node: The device tree node associated with the VIC. * @@ -178,7 +179,8 @@ late_initcall(vic_pm_init); * This also configures the IRQ domain for the VIC. */ static void __init vic_register(void __iomem *base, unsigned int irq, - u32 resume_sources, struct device_node *node) + u32 valid_sources, u32 resume_sources, + struct device_node *node) { struct vic_device *v; @@ -192,8 +194,8 @@ static void __init vic_register(void __iomem *base, unsigned int irq, v->resume_sources = resume_sources; v->irq = irq; vic_id++; - v->domain = irq_domain_add_legacy(node, 32, irq, 0, - &irq_domain_simple_ops, v); + v->domain = irq_domain_add_legacy(node, fls(valid_sources), irq, 0, + &vic_irqdomain_ops, v); } static void vic_ack_irq(struct irq_data *d) @@ -339,7 +341,7 @@ static void __init vic_init_st(void __iomem *base, unsigned int irq_start, } vic_set_irq_sources(base, irq_start, vic_sources); - vic_register(base, irq_start, 0, node); + vic_register(base, irq_start, vic_sources, 0, node); } void __init __vic_init(void __iomem *base, unsigned int irq_start, @@ -381,7 +383,7 @@ void __init __vic_init(void __iomem *base, unsigned int irq_start, vic_set_irq_sources(base, irq_start, vic_sources); - vic_register(base, irq_start, resume_sources, node); + vic_register(base, irq_start, vic_sources, resume_sources, node); } /**