Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756962Ab2EHPol (ORCPT ); Tue, 8 May 2012 11:44:41 -0400 Received: from hqemgate03.nvidia.com ([216.228.121.140]:11203 "EHLO hqemgate03.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755924Ab2EHPnz (ORCPT ); Tue, 8 May 2012 11:43:55 -0400 X-PGP-Universal: processed; by hqnvupgp06.nvidia.com on Tue, 08 May 2012 08:43:44 -0700 From: Rhyland Klein To: Mark Brown , Samuel Ortiz , Grant Likely , Rob Herring , Liam Girdwood CC: , , Rhyland Klein Subject: [PATCH 5/6 v3] mfd: tps65910-irq: Add devicetree init support Date: Tue, 8 May 2012 11:42:42 -0700 Message-ID: <1336502563-31789-6-git-send-email-rklein@nvidia.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1336502563-31789-1-git-send-email-rklein@nvidia.com> References: <1336502563-31789-1-git-send-email-rklein@nvidia.com> X-NVConfidentiality: public MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1782 Lines: 58 Add support for initializing when boot using devicetree. The main difference is that the irq_base will not be setup, so it needs to be manually handled. Signed-off-by: Rhyland Klein --- v3: no change from v2. v2: split off irq specific changes based on previous review comments. drivers/mfd/tps65910-irq.c | 21 +++++++++++++++------ 1 files changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/mfd/tps65910-irq.c b/drivers/mfd/tps65910-irq.c index 0f1ff7f..066a30f 100644 --- a/drivers/mfd/tps65910-irq.c +++ b/drivers/mfd/tps65910-irq.c @@ -180,12 +180,6 @@ int tps65910_irq_init(struct tps65910 *tps65910, int irq, return -EINVAL; } - tps65910->irq_mask = 0xFFFFFF; - - mutex_init(&tps65910->irq_lock); - tps65910->chip_irq = irq; - tps65910->irq_base = pdata->irq_base; - switch (tps65910_chip_id(tps65910)) { case TPS65910: tps65910->irq_num = TPS65910_NUM_IRQ; @@ -195,6 +189,21 @@ int tps65910_irq_init(struct tps65910 *tps65910, int irq, break; } + if (pdata->irq_base <= 0) + pdata->irq_base = irq_alloc_descs(-1, 0, tps65910->irq_num, -1); + + if (pdata->irq_base <= 0) { + dev_err(tps65910->dev, "Failed to allocate irq descs: %d\n", + pdata->irq_base); + return pdata->irq_base; + } + + tps65910->irq_mask = 0xFFFFFF; + + mutex_init(&tps65910->irq_lock); + tps65910->chip_irq = irq; + tps65910->irq_base = pdata->irq_base; + /* Register with genirq */ for (cur_irq = tps65910->irq_base; cur_irq < tps65910->irq_num + tps65910->irq_base; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/