From mboxrd@z Thu Jan 1 00:00:00 1970 From: 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> References: <1336502563-31789-1-git-send-email-rklein@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <1336502563-31789-1-git-send-email-rklein@nvidia.com> Sender: linux-kernel-owner@vger.kernel.org To: Mark Brown , Samuel Ortiz , Grant Likely , Rob Herring , Liam Girdwood Cc: linux-kernel@vger.kernel.org, devicetree-discuss@lists.ozlabs.org, Rhyland Klein List-Id: devicetree@vger.kernel.org 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