From patchwork Thu Jun 12 11:53:27 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sricharan R X-Patchwork-Id: 31820 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-vc0-f198.google.com (mail-vc0-f198.google.com [209.85.220.198]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 4E2FE20AE6 for ; Thu, 12 Jun 2014 11:57:38 +0000 (UTC) Received: by mail-vc0-f198.google.com with SMTP id hy10sf2265408vcb.5 for ; Thu, 12 Jun 2014 04:57:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe:content-type; bh=uwrqBF9k8lPXHVQVRE7VpJZ8IkaAXLR0jTlrDDRzJhU=; b=WU64staMDfmimy3Lbmk3xDo7p+85I1fuFQk6Un2sEVZSDvLBdoZCOUA6rw+awVxePe TEqtnWCKdC/FoyKkfJdZrfYWg/BTvJT913q4IQ3gqDKWIOeQhpKO4RVH71onQNp3qh5X lV30Cn0r1KU/q4vZ5tRNq+i+ALC5H4sfWoVKBKkWFPdYoeuoFWb6A9RrcqG88Vr19miM 4zkC5SrAcaDrJWRQ8UNizu8jVvSq6uS6fzkZVOST86bXvFUhpmKOKE0eGsm489W8GaEC 89xMrprxC05r98Sf+6qf9rXauDSdkR3DNseuJIlktEcq8D/ksqQX/hbwOoP1bRT/oFSd K1hg== X-Gm-Message-State: ALoCoQkSe0S5vhDnmgstoA9Ma/wByOooPPFxrbA4XeMN5+yI/nysDnuKP1MTdhM0D47eC93l/qFG X-Received: by 10.58.119.138 with SMTP id ku10mr4635448veb.4.1402574258090; Thu, 12 Jun 2014 04:57:38 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.51.132 with SMTP id u4ls2965061qga.36.gmail; Thu, 12 Jun 2014 04:57:38 -0700 (PDT) X-Received: by 10.221.7.71 with SMTP id on7mr44240867vcb.18.1402574257962; Thu, 12 Jun 2014 04:57:37 -0700 (PDT) Received: from mail-ve0-f172.google.com (mail-ve0-f172.google.com [209.85.128.172]) by mx.google.com with ESMTPS id r1si243737vcx.25.2014.06.12.04.57.37 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 12 Jun 2014 04:57:37 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.128.172 as permitted sender) client-ip=209.85.128.172; Received: by mail-ve0-f172.google.com with SMTP id jz11so1664298veb.31 for ; Thu, 12 Jun 2014 04:57:37 -0700 (PDT) X-Received: by 10.58.208.228 with SMTP id mh4mr30643660vec.22.1402574257818; Thu, 12 Jun 2014 04:57:37 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.221.54.6 with SMTP id vs6csp397176vcb; Thu, 12 Jun 2014 04:57:37 -0700 (PDT) X-Received: by 10.68.239.137 with SMTP id vs9mr12189194pbc.84.1402574256908; Thu, 12 Jun 2014 04:57:36 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id px17si849336pab.171.2014.06.12.04.57.36; Thu, 12 Jun 2014 04:57:36 -0700 (PDT) Received-SPF: none (google.com: linux-kernel-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933914AbaFLL51 (ORCPT + 27 others); Thu, 12 Jun 2014 07:57:27 -0400 Received: from arroyo.ext.ti.com ([192.94.94.40]:60537 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933853AbaFLL5X (ORCPT ); Thu, 12 Jun 2014 07:57:23 -0400 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by arroyo.ext.ti.com (8.13.7/8.13.7) with ESMTP id s5CBunP4016918; Thu, 12 Jun 2014 06:56:49 -0500 Received: from DLEE70.ent.ti.com (dlemailx.itg.ti.com [157.170.170.113]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id s5CBunsw030045; Thu, 12 Jun 2014 06:56:49 -0500 Received: from dflp32.itg.ti.com (10.64.6.15) by DLEE70.ent.ti.com (157.170.170.113) with Microsoft SMTP Server id 14.3.174.1; Thu, 12 Jun 2014 06:56:49 -0500 Received: from uda0393807.india.ti.com. (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id s5CBtEc8008910; Thu, 12 Jun 2014 06:56:45 -0500 From: Sricharan R To: , , , CC: , , , , , , , Subject: [PATCH V2 19/19] irqchip: crossbar allow for quirky hardware with direct hardwiring of GIC Date: Thu, 12 Jun 2014 17:23:27 +0530 Message-ID: <1402574007-13987-20-git-send-email-r.sricharan@ti.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1402574007-13987-1-git-send-email-r.sricharan@ti.com> References: <1402574007-13987-1-git-send-email-r.sricharan@ti.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: r.sricharan@ti.com X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.128.172 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Nishanth Menon On certain platforms such as DRA7, SPIs 0, 1, 2, 3, 5, 6, 10, 131, 132, 133 are direct wired to hardware blocks bypassing crossbar. This quirky implementation is *NOT* supposed to be the expectation of crossbar hardware usage. However, these are already marked in our description of the hardware with SKIP and RESERVED where appropriate. Unfortunately, we need to be able to refer to these hardwired IRQs. So, to request these, crossbar driver can use the existing information from it's table that these SKIP/RESERVED maps are direct wired sources and generic allocation/programming of crossbar should be avoided. Signed-off-by: Nishanth Menon --- .../devicetree/bindings/arm/omap/crossbar.txt | 12 ++++++++++-- drivers/irqchip/irq-crossbar.c | 20 ++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/arm/omap/crossbar.txt b/Documentation/devicetree/bindings/arm/omap/crossbar.txt index 816d11b..7476d9b 100644 --- a/Documentation/devicetree/bindings/arm/omap/crossbar.txt +++ b/Documentation/devicetree/bindings/arm/omap/crossbar.txt @@ -35,8 +35,10 @@ Documentation/devicetree/bindings/arm/gic.txt for further details. An interrupt consumer on an SoC using crossbar will use: interrupts = -request number shall be between 0 to that described by -"ti,max-crossbar-sources" +When the request number is between 0 to that described by +"ti,max-crossbar-sources", it is assumed to be a crossbar mapping. If the +request_number is greater than "ti,max-crossbar-sources", then it is mapped as a +quirky hardware mapping direct to GIC. Example: device_x@0x4a023000 { @@ -44,3 +46,9 @@ Example: interrupts = ; ... }; + + device_y@0x4a033000 { + /* Direct mapped GIC SPI 1 used */ + interrupts = ; + ... + }; diff --git a/drivers/irqchip/irq-crossbar.c b/drivers/irqchip/irq-crossbar.c index 745ad0a..2b61bbb 100644 --- a/drivers/irqchip/irq-crossbar.c +++ b/drivers/irqchip/irq-crossbar.c @@ -98,8 +98,13 @@ static inline int allocate_free_irq(int cb_no) static inline bool needs_crossbar_write(irq_hw_number_t hw) { - if (hw > GIC_IRQ_START) - return true; + int cb_no; + + if (hw > GIC_IRQ_START) { + cb_no = cb->irq_map[hw - GIC_IRQ_START]; + if (cb_no != IRQ_RESERVED && cb_no != IRQ_SKIP) + return true; + } return false; } @@ -139,8 +144,19 @@ static int crossbar_domain_xlate(struct irq_domain *d, { int ret; int req_num = intspec[1]; + int direct_map_num; if (req_num >= cb->max_crossbar_sources) { + direct_map_num = req_num - cb->max_crossbar_sources; + if (direct_map_num < cb->int_max) { + ret = cb->irq_map[direct_map_num]; + if (ret == IRQ_RESERVED || ret == IRQ_SKIP) { + /* We use the interrupt num as h/w irq num */ + ret = direct_map_num; + goto found; + } + } + pr_err("%s: requested crossbar number %d > max %d\n", __func__, req_num, cb->max_crossbar_sources); return -EINVAL;