From patchwork Wed Mar 5 13:25:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stach X-Patchwork-Id: 3774561 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id BA9B0BF13A for ; Wed, 5 Mar 2014 13:26:45 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E384420222 for ; Wed, 5 Mar 2014 13:26:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 246EA2025B for ; Wed, 5 Mar 2014 13:26:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754505AbaCEN0k (ORCPT ); Wed, 5 Mar 2014 08:26:40 -0500 Received: from metis.ext.pengutronix.de ([92.198.50.35]:33530 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754182AbaCEN0e (ORCPT ); Wed, 5 Mar 2014 08:26:34 -0500 Received: from weser.hi.pengutronix.de ([10.1.0.109]) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1WLBq7-0007xQ-AO; Wed, 05 Mar 2014 14:26:27 +0100 From: Lucas Stach To: linux-arm-kernel@lists.infradead.org Cc: linux-sh@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-tegra@vger.kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, Jingoo Han , Bjorn Helgaas , Simon Horman , Shawn Guo , Stephen Warren , Ben Dooks , Kukjin Kim , Thierry Reding , Arnd Bergmann , kernel@pengutronix.de Subject: [PATCH v2 3/6] PCI: rcar: use new OF interrupt mapping when possible Date: Wed, 5 Mar 2014 14:25:48 +0100 Message-Id: <1394025951-32438-4-git-send-email-l.stach@pengutronix.de> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1394025951-32438-1-git-send-email-l.stach@pengutronix.de> References: <1394025951-32438-1-git-send-email-l.stach@pengutronix.de> X-SA-Exim-Connect-IP: 10.1.0.109 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-samsung-soc@vger.kernel.org Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,KHOP_BIG_TO_CC, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This is the recommended method of doing the IRQ mapping. Still fall back to the old method in order to not break the just submitted board files. Signed-off-by: Lucas Stach Acked-by: Simon Horman --- v2: pass in parent device to pci_common_init(), to make DT parsing work. --- drivers/pci/host/pci-rcar-gen2.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/pci/host/pci-rcar-gen2.c b/drivers/pci/host/pci-rcar-gen2.c index ceec147baec3..3a0914163ad0 100644 --- a/drivers/pci/host/pci-rcar-gen2.c +++ b/drivers/pci/host/pci-rcar-gen2.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -160,8 +161,13 @@ static int __init rcar_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) { struct pci_sys_data *sys = dev->bus->sysdata; struct rcar_pci_priv *priv = sys->private_data; + int irq; + + irq = of_irq_parse_and_map_pci(dev, slot, pin); + if (!irq) + irq = priv->irq; - return priv->irq; + return irq; } /* PCI host controller setup */ @@ -249,6 +255,8 @@ static int __init rcar_pci_add_controller(struct rcar_pci_priv *priv) void **private_data; int count; + pci_common_init_dev(priv->dev, &rcar_hw_pci); + if (rcar_hw_pci.nr_controllers < rcar_pci_count) goto add_priv; @@ -322,8 +330,6 @@ static int __init rcar_pci_init(void) int retval; retval = platform_driver_probe(&rcar_pci_driver, rcar_pci_probe); - if (!retval) - pci_common_init(&rcar_hw_pci); /* Private data pointer array is not needed any more */ kfree(rcar_hw_pci.private_data);