From patchwork Wed May 24 10:16:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 100426 Delivered-To: patch@linaro.org Received: by 10.140.96.100 with SMTP id j91csp201687qge; Wed, 24 May 2017 03:17:08 -0700 (PDT) X-Received: by 10.99.119.137 with SMTP id s131mr37485816pgc.116.1495621028096; Wed, 24 May 2017 03:17:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1495621028; cv=none; d=google.com; s=arc-20160816; b=z3OBAJ0rVTMm0XBFkeA9uP9LDCWcJLbl/XxYUxjTwc1/eko728i90IbICyTsElGlrb oXlsz8DEncRWLObzUCU+5EunQlhDJAEuZdt2QOi9vRgOma+NO4nGiDmYST8kbPpzc7iw /ZbGoFcRmDxEBHmekAq2V5BTF2WSaoABjCV+DS+Buqr2o0UPDreDuAVZ+XEkjqUMMS3b UEp0z3YtLT27OOrBrRDRdBRhre1xrlR6OwY9xDRnxU3AjcFmHA4fBOUNcbuqH5bW5CKu dSOnsn7vIiVU83RYyaltax0XE68KdhaNzPMLPdF3dtPWGV/Zah1Fsrwhi/gDbGIl8ftY PzLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=1ynMPdaWPwdE5NFEU6jIsyVocyFLM/yNUqzKGQJgb0I=; b=PoLwmp8NDLGdx/Nwv3IvY20rXZlvk5Kk4ZVGmyJbhpYcjPmAyDDyPqFszddA3tFXTH 17jXiewqJVrjIBDskfQGidlRbT5BS0DF4tR8ggaNubXVEttYjGGvtMjklNjo1hhsoIaN JsRi74WarJbYY7+mTpR/i+JdkClaM4ETCin3OQpAfb64Uo++6Coa+q/DbtfMvSyYoA1Z Wbc2UUhWKAAARKCMUKSDOpTbC+o9DT97RMu9s+H6FH0u168JZVR+QXJNeapKNJd0TWy1 ZzBB5XEPS4ZN7M3qT6fg2Z39430VUCaQVAksWUSClQJ7VodK99PUitwTQCAQ6EMCfA2g jDTA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m29si23728586pgc.78.2017.05.24.03.17.07; Wed, 24 May 2017 03:17:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of devicetree-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965411AbdEXKRG (ORCPT + 7 others); Wed, 24 May 2017 06:17:06 -0400 Received: from foss.arm.com ([217.140.101.70]:35526 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936667AbdEXKRD (ORCPT ); Wed, 24 May 2017 06:17:03 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3DB1B2B; Wed, 24 May 2017 03:17:03 -0700 (PDT) Received: from e107155-lin.cambridge.arm.com (unknown [10.1.211.34]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 26F3D3F578; Wed, 24 May 2017 03:17:02 -0700 (PDT) From: Sudeep Holla To: linux-kernel@vger.kernel.org, Jassi Brar Cc: Sudeep Holla , devicetree@vger.kernel.org, Alexey Klimov , Jassi Brar Subject: [PATCH v2 3/6] mailbox: arm_mhu: migrate to threaded irq handler Date: Wed, 24 May 2017 11:16:40 +0100 Message-Id: <1495621003-4291-4-git-send-email-sudeep.holla@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495621003-4291-1-git-send-email-sudeep.holla@arm.com> References: <1495621003-4291-1-git-send-email-sudeep.holla@arm.com> Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org In preparation to introduce support for doorbells which require the interrupt handlers to be threaded, this patch moves the existing interrupt handler to threaded handler. Also it moves out the registering and freeing of the handlers from the mailbox startup and shutdown methods. This also is required to support doorbells. Cc: Alexey Klimov Cc: Jassi Brar Signed-off-by: Sudeep Holla --- drivers/mailbox/arm_mhu.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/mailbox/arm_mhu.c b/drivers/mailbox/arm_mhu.c index be0f293a9457..ebe17c097f43 100644 --- a/drivers/mailbox/arm_mhu.c +++ b/drivers/mailbox/arm_mhu.c @@ -84,27 +84,15 @@ static int mhu_startup(struct mbox_chan *chan) { struct mhu_link *mlink = chan->con_priv; u32 val; - int ret; val = readl_relaxed(mlink->tx_reg + INTR_STAT_OFS); writel_relaxed(val, mlink->tx_reg + INTR_CLR_OFS); - ret = request_irq(mlink->irq, mhu_rx_interrupt, - IRQF_SHARED, "mhu_link", chan); - if (ret) { - dev_err(chan->mbox->dev, - "Unable to acquire IRQ %d\n", mlink->irq); - return ret; - } - return 0; } static void mhu_shutdown(struct mbox_chan *chan) { - struct mhu_link *mlink = chan->con_priv; - - free_irq(mlink->irq, chan); } static const struct mbox_chan_ops mhu_ops = { @@ -132,13 +120,6 @@ static int mhu_probe(struct amba_device *adev, const struct amba_id *id) return PTR_ERR(mhu->base); } - for (i = 0; i < MHU_CHANS; i++) { - mhu->chan[i].con_priv = &mhu->mlink[i]; - mhu->mlink[i].irq = adev->irq[i]; - mhu->mlink[i].rx_reg = mhu->base + mhu_reg[i]; - mhu->mlink[i].tx_reg = mhu->mlink[i].rx_reg + TX_REG_OFFSET; - } - mhu->mbox.dev = dev; mhu->mbox.chans = &mhu->chan[0]; mhu->mbox.num_chans = MHU_CHANS; @@ -155,6 +136,28 @@ static int mhu_probe(struct amba_device *adev, const struct amba_id *id) return err; } + for (i = 0; i < MHU_CHANS; i++) { + int irq = mhu->mlink[i].irq = adev->irq[i]; + + if (irq <= 0) { + dev_dbg(dev, "No IRQ found for Channel %d\n", i); + continue; + } + + mhu->chan[i].con_priv = &mhu->mlink[i]; + mhu->mlink[i].rx_reg = mhu->base + mhu_reg[i]; + mhu->mlink[i].tx_reg = mhu->mlink[i].rx_reg + TX_REG_OFFSET; + + err = devm_request_threaded_irq(dev, irq, NULL, + mhu_rx_interrupt, IRQF_ONESHOT, + "mhu_link", &mhu->chan[i]); + if (err) { + dev_err(dev, "Can't claim IRQ %d\n", irq); + mbox_controller_unregister(&mhu->mbox); + return err; + } + } + dev_info(dev, "ARM MHU Mailbox registered\n"); return 0; }