From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754060AbcIMFJQ (ORCPT ); Tue, 13 Sep 2016 01:09:16 -0400 Received: from mail-dm3nam03on0047.outbound.protection.outlook.com ([104.47.41.47]:48773 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750734AbcIMFJO (ORCPT ); Tue, 13 Sep 2016 01:09:14 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; From: Po Liu To: , , , CC: Bjorn Helgaas , Shawn Guo , "Marc Zyngier" , Rob Herring , Roy Zang , Mingkai Hu , Stuart Yoder , Yang-Leo Li , Arnd Bergmann , Minghuan Lian , Murali Karicheri , Po Liu Subject: [PATCH v5 3/3] pci:aer: add support aer interrupt with none MSI/MSI-X/INTx mode Date: Tue, 13 Sep 2016 12:40:59 +0800 Message-ID: <1473741659-17618-3-git-send-email-po.liu@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1473741659-17618-1-git-send-email-po.liu@nxp.com> References: <1472625442-23309-2-git-send-email-po.liu@nxp.com> <1473741659-17618-1-git-send-email-po.liu@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131182159955076029;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(7416002)(4326007)(76176999)(105606002)(68736007)(33646002)(5660300001)(97736004)(626004)(50986999)(19580395003)(11100500001)(356003)(87936001)(586003)(305945005)(19580405001)(5001770100001)(189998001)(2906002)(86362001)(7846002)(92566002)(2201001)(81156014)(48376002)(81166006)(8676002)(8666005)(8936002)(2950100001)(47776003)(575784001)(5003940100001)(36756003)(50226002)(104016004)(85426001)(50466002)(229853001)(106466001)(77096005)(7059030)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1PR0301MB0708;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC003;1:ECDxCBB9TH9uhAk/pNH6GybrJX91tANXIpD3kOk8QLUF382kfy19GLE+s668NKlu/DBFmCDpw9uDGWtFnw8ExnbszRja3p0wbqVCBU5g/9rIcCWrJw0tyFl36uUq5WSA3x5a7d5WQM/Bqwe/w7p9eq8R0dsxLNxaz4QCo3UIwJMW5JIXuFQMfLyBC/lj7zFrk1qxQTbmVdLZqZXPpkLt9102p7UeyDNT2z9M6+TLoFgS5hnEznemjNtvlCQmfkbH52iGHRkhJj17N5ahwkgBHv/Dg7gp30bhcOFlHZELAUUZfls2Z7k34gia9e5q2hjvHEdswStDN2BHHuFh3E1aV9gbFH1uMHBez9zj5OLoVBdKPce4uzLMQW3nCQp4+GFxjMiStiBrlRJS0xi+0Demw6LKWUN6y7fY48vKgPthlaB+ADO9awHKrtnRdSlAZ4chlHugKJAK2mieeXebYKQmHUQBvHIyr7ygn2aDfMHQY0mZZrJwySbDiDoEUFiTY8v5ICo+Bzhmg2zUkEI1BEAXOrGPa0pE2Cpj+6vJTFBhVMMytmbrBGumXeoX6PXda11O7YwTQwneDcQK/J8fMcRF7uCgxD59WztZAbjPhOgYmcexYcknS9KVRurnhs7yoU0nVIYS6ZpUonR69JUAD45STCbh+9wImi4/Hv1EcpV4O+6IwtffrW+clcnRIfmP0sCdOEX9uBwPCSn2AwO7aJXW/0ipCoxb1c/EyUx4QRFDvk+r7+L6NgdCVy4uZMNQWzzY MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 06527714-bf8c-4b5b-a3bd-08d3db91df74 X-Microsoft-Exchange-Diagnostics: 1;BN1PR0301MB0708;2:6QHvM9g0NLxb3mqJ04tcQEuULIEPX18R87N6xuo54UyO6ZTHB8D+gdaKdsenH1t8E2c0vkHra0LEFqXstMDCugmwqFuIn96euLNU3aDxM4TthLNRxSReHbl5ux40zkNp959nVzUd6jzAaRiWX+CfLviKDfBIEvmQAz6c0Rr19AjCkr40bD38+QbGW02IIUUF;3:D0V5skqZYvXE6fUjJbdFiu83lsimZroLX8dxzKaKsWTgXG4NDhQPcllXCwfsHCh4GZPhy3D4G100RVYx+5MI+W4eDoThaF8Yf321cWiwGQLGmcESmay0gUaSdJE/LPbHFsjNLtW+xM+3C1WGz7C84qX4B3DA3qyVUkpHe1JNkFttcJHEn3XJTjgrQ0XhcmZ9EUBCU65CUagtGd4wYuf5WLnIM7L52QnmzHuKIeiWctA= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR0301MB0708; X-Microsoft-Exchange-Diagnostics: 1;BN1PR0301MB0708;25:csWnSZ54jzp/WVWG0HacWo2eC64w4RHSIrrerCm174d3VMSxWA7tWmCH7WG0GM9+PzYGW/ukws5eGSfJZIWxHZ6iFt6mSjyhae+dlf/71hJfgehaIXelXnJZLQ21qlP4legV5Qmjfw/brbAqKjb3aGfZzYN3JjJwjZGuB+CJ8Z9Ea8X+a2x9KXRKP6PTPNqIHbdTxJp+R/WLEKzWBsH9Ql3Gh6pHd/h3169T085K5zDoXu8j1gyIXcMsxiKieulHUSkhPu5yTgnGM5EYoo2sfP8NLX+/z9DNvlnMWjRNdB70BP7TribQ6gkJHxv1GUDdlz5kXx0vohnAyE5ZZAySM+u4wjbEW87vDzTuCivUKjVg4qFDNdkeuzjGBMFej9uehgcsdqwXL4sWEikNx6teRmYLY1KHJvkQ+l9uMF/8Sx74E0ZK6DW3rpQ5g84389ZU7RHEPG3gqC1lDapilHzn7+NjvRAax0aJVGpNE+PG3rl5RayOxlP7w4Pg6xtY+olk7bm/goooJQXED6CfE7Hf22nEPaPvjPwV3iLdzqqq8EPsenN7ElHMDT+WuG9RWpNOXjDlrWPrnG58RUTzL0cZ3I+fkXKf60e1eDbP92Y7ihheYH8ASEpVrVP39hQ6sM2R+DE3WN0rEtHfWRV7TXBgkTkSUb1w74MQ54jh0SXA71z85sFsQh5f6SbZjm+2ni6to9qT4c/1mUL4sM/kKoeOvx1WOMZ5g0g92u65XZ2b+HruhEJmtkFEqhXfBquW6PvG X-Microsoft-Exchange-Diagnostics: 1;BN1PR0301MB0708;31:RivUkpmNxaTHVv5JHNHiqeG+9wYH/dweSxVqkPAjYVDL7m7DnhGBmx953EkTis6znh1DNfEYedpbJwNM0yXwfo3t2QemlGO4Z0KoVtllw2asLbfCKKM3JDoszTpIw6kBhJ4zfbNZjw7iusjs4Pj5I/OkRV2zFziSYsglxxOHJElVvLfLyHJng5UB0uZevZjw/FIFIZDQugH/k7GDHjK15rD+i98eBUGNp/U4D8pKLKA=;4:cjXJ3csqUS8b9gENXXJ15tCRac3hx3aFWPJxfZm3XVPwvOu/gATkq+hEBe4bc/jwlm/nbDUkr/N6j0bgqdWowCw2C7hLt/EsGh/4uNP5OE77KQhaHa80NxiXx5731wL7xuaPNI4stNj6y4WXHKkIz+0yDTbu+e2GN0a538BEwfVHYst/9uO3ifXDs+ULLcOmM0ZNkfbpaE0G/FgM+wO9+SRr2D0zzE7lziYlAts/BuEpT+T6KNUbgUAdY0FLOLxI34jzNeVvaJbliuQKrb+w4p+OXoo2zsPUlzhTHHuqTjAebkZIUlLmCbi4+kt5IPIUKE/N1bGU5avu4RZsLhvX2Z9IOe7lZOqPbVljqbkbxbqxtpsp7Vs0Lrg2BWWSCeO93lfM1Gobe2wDCc4Fn37lV2mTfQipJbllhFwDmPsNS2oj6YZ0E08AJRHnS9KiFL68ECRy0bEZdC/STIqPkNf5Pcz6QjL3pYAxA/fCR4IGKCA/CnhF2jVq+ISCQDdXw05u3FCxSLtod74cJqGTRmN/KeY9oUVaeCoro+n+J8TA8RE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13015025)(13017025)(13023025)(13024025)(13018025)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:BN1PR0301MB0708;BCL:0;PCL:0;RULEID:(400006);SRVR:BN1PR0301MB0708; X-Forefront-PRVS: 0064B3273C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN1PR0301MB0708;23:u9FYHYDt7XBOd2ViTEavr+6pzPfqavGJgprlHl9?= =?us-ascii?Q?x/mXm8OqK9LUqdGotUb7Xq5UbJ/xL+dur2FyiwPiSTq0DF+3LDx7Gl1rniBo?= =?us-ascii?Q?tnMn3k8O+ZcYcSVAnYzpaaE87pK5COIbkp8p2eu+BKSq/kTRbmWaAdPiZjXS?= =?us-ascii?Q?6dqCDSN8etpW+RE5XOA1p6WbnG3hkJ4jRcfHhds8G0ISkveRO497vBZEzWQr?= =?us-ascii?Q?hujhh3pTdq8ZlLgiSnI208sXSo/mVMpzrtlyDNmjozLIWhEWNhRloof5bZS0?= =?us-ascii?Q?0lDZrazMZQiUTN0M08JjGcJ+Ix733p6KuCpjC41ttzbfkIvzC7G0DGpO5Mks?= =?us-ascii?Q?eZsnxW+V9yktbr8o6YsJWkFY+jOYBHAOZ9zYNVvsvsmpTUqESjo0m0tFDpit?= =?us-ascii?Q?uyfXDEuPxBdgf9O8d9Kk6Tx47RSETccNMWvPiP+UFt0m8i4FMtg2UtLDC1tb?= =?us-ascii?Q?N5orKZhiNpMHarmQLSUkOp6avKwcHQOuxQ8Fk1KB+BjB4K+4eeTSDUehFWMf?= =?us-ascii?Q?U1RpyT5Q6TcY9+29ih+deC2p0daYa/NJ/tn6/fGH/LxCbd6TA4leOs+EHlWJ?= =?us-ascii?Q?GFtNEPkbSc730PfovhBl1BPwrtEnW47xCBYcNudu0wEWAgR7lLFOnNbvIwwH?= =?us-ascii?Q?Mzb7816PiOvTGFZgFcwifjgjieQsMpBOJk/VOEixyYAf501/3Yzh/sYqz3LK?= =?us-ascii?Q?I9s6bvZLnb3IK+236M5er24NKqkFV2n7N0W2SmZb4hC2egOG1Fm6IyhywCDW?= =?us-ascii?Q?u7IM3IulVOuxpxRhsiTdPz65+tQls5SYy+i6uWPSlVwzhthRB14nLPMeHPzK?= =?us-ascii?Q?RAj+6797WuYLIyTfaS/AXT3voWdrheccTQYBzt7AfgleO/9Lp3fyZ9EA18v7?= =?us-ascii?Q?M4kSdFaJd7yIv0iRCvPgJVF16Y1SPww0ZgVV9aUNX5CMmbdjYm+WAcWt+eCM?= =?us-ascii?Q?stPbvrjFg0smNUh6FxbP0MpjliVS6+gP/BgQ5bxQr9UL97KcVFiBbJI4elSx?= =?us-ascii?Q?HCIBFk40om36DyRS61aiQFW7bGXEaaxzFR/rgv7O9slC5Tam1GpLLuz2kSFg?= =?us-ascii?Q?rTWLOd3zeB3uWLa+1yFGmbdahzZPKR5UwMRuNYmdKBV58AFKipODIsLMBq9L?= =?us-ascii?Q?mD6V/g/LQZG73ANvJYAVeKLbeDCosFG8w2byuuMQn9+9VlW8b91ot3J59P0J?= =?us-ascii?Q?rp8jUo20zlry1whpLeDPpEjr4Hy7GHjzTQDGSE5K9ATboQ2r00mbziBmVNNb?= =?us-ascii?Q?PGfig1rGQiFYliMKLHU4=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN1PR0301MB0708;6:+xWc7JKVR9sFz3o9BFT4kXxnY6LSnpkV8Jlll+qzSx+shBbDyqF4r5V31UpRaruFzfMaxI7+ELXxjfcauhBC/MEWAm3tuhZILfBSaYHtFdWvNKd+D0/OMOlNAkEPSS8sxfBSENXQmD4p0W3R6gcFtR+4wQzbLo+XEGF4BxXN+dToeoFWuv+Z/6poa7dZfUnRJrIkp5+klEBm7KEnqPybTZB3+bz6/WvGYWHk1t9rgKSW7xU7lPmMfIPJwKeGGK4+rBkiPm5GcTCRO7xCRi5wd6OI0bxVKIwvRMB0Q90W75k=;5:jKjldz32/Hi2FtUyXyxfxA0OiitIGgT6ela1NvAPEhwOWZdxu6m+dNhXMUyCaMbMjRHCB8dbXf29HqQ9nJXfpsHlDQI7jJFbc+dEYd9ICq8rdRFDcSgtKE6xw/pqFxP65YbOV+ZgfPtWOcmALbB2cIdCaCY605yvz+RlRPFxWbM=;24:hOLHDZtGMLzEgU5c6mr9LNIK2jKCoYBc7lx07Je8O1njB0hrJ3Yvcjn59ri0uN6nHfUUJKCSIasQFuN7TU6XH0GxCgX8eDgQZyTObxRJU0M=;7:C9sFvPYJB6RNaFfXX6u38zm3mKthVORg5DMRJ2tVjlATadFCsuma1bOrB7ObqRJhpyWf2BEk1Qo/YHBir+dnme1qRHSqSNm4qa1iKEgV39JzjK+qewBneVR4MG2Lz79ruKQz9RSV4+Mqh7pVm1hEUCuDN5OuV5WTVWZDK7X0n7im1yF37zH8ohIzSaBnYYauzDfvrhoPdMGbIM7NBqEjoKGDG0A6cSGRpbp5x8LX2kNoJea4b3fxrbGt3l1HrUbH SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2016 04:53:15.2424 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR0301MB0708 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On some platforms, root port doesn't support MSI/MSI-X/INTx in RC mode. When chip support the aer interrupt with none MSI/MSI-X/INTx mode, maybe there is interrupt line for aer pme etc. Search the interrupt number in the fdt file. Then fixup the dev->irq with it. Signed-off-by: Po Liu --- changes for v5: - Add clear 'aer' interrup-names description .../devicetree/bindings/pci/layerscape-pci.txt | 11 +++++--- drivers/pci/pcie/portdrv_core.c | 31 +++++++++++++++++++--- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/Documentation/devicetree/bindings/pci/layerscape-pci.txt b/Documentation/devicetree/bindings/pci/layerscape-pci.txt index 41e9f55..101d0a7 100644 --- a/Documentation/devicetree/bindings/pci/layerscape-pci.txt +++ b/Documentation/devicetree/bindings/pci/layerscape-pci.txt @@ -18,8 +18,10 @@ Required properties: - reg: base addresses and lengths of the PCIe controller - interrupts: A list of interrupt outputs of the controller. Must contain an entry for each entry in the interrupt-names property. -- interrupt-names: Must include the following entries: - "intr": The interrupt that is asserted for controller interrupts +- interrupt-names: It may be include the following entries: + "aer": The interrupt that is asserted for aer interrupt + "pme": The interrupt that is asserted for pme interrupt + ...... - fsl,pcie-scfg: Must include two entries. The first entry must be a link to the SCFG device node The second entry must be '0' or '1' based on physical PCIe controller index. @@ -35,8 +37,9 @@ Example: reg = <0x00 0x03400000 0x0 0x00010000 /* controller registers */ 0x40 0x00000000 0x0 0x00002000>; /* configuration space */ reg-names = "regs", "config"; - interrupts = ; /* controller interrupt */ - interrupt-names = "intr"; + interrupts = , /* aer interrupt */ + ; /* pme interrupt */ + interrupt-names = "aer", "pme"; fsl,pcie-scfg = <&scfg 0>; #address-cells = <3>; #size-cells = <2>; diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c index e9270b4..7c4943d 100644 --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "../pci.h" #include "portdrv.h" @@ -200,6 +201,28 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask) static int init_service_irqs(struct pci_dev *dev, int *irqs, int mask) { int i, irq = -1; + int ret; + struct device_node *np = NULL; + + for (i = 0; i < PCIE_PORT_DEVICE_MAXSERVICES; i++) + irqs[i] = 0; + + if (dev->bus->dev.of_node) + np = dev->bus->dev.of_node; + + /* If root port doesn't support MSI/MSI-X/INTx in RC mode, + * request irq for aer + */ + if (IS_ENABLED(CONFIG_OF_IRQ) && np && + (mask & PCIE_PORT_SERVICE_PME)) { + ret = of_irq_get_byname(np, "aer"); + if (ret > 0) { + irqs[PCIE_PORT_SERVICE_AER_SHIFT] = ret; + if (dev->irq) + irq = dev->irq; + goto no_msi; + } + } /* * If MSI cannot be used for PCIe PME or hotplug, we have to use @@ -225,11 +248,13 @@ static int init_service_irqs(struct pci_dev *dev, int *irqs, int mask) irq = dev->irq; no_msi: - for (i = 0; i < PCIE_PORT_DEVICE_MAXSERVICES; i++) - irqs[i] = irq; + for (i = 0; i < PCIE_PORT_DEVICE_MAXSERVICES; i++) { + if (!irqs[i]) + irqs[i] = irq; + } irqs[PCIE_PORT_SERVICE_VC_SHIFT] = -1; - if (irq < 0) + if (irq < 0 && irqs[PCIE_PORT_SERVICE_AER_SHIFT] < 0) return -ENODEV; return 0; } -- 2.1.0.27.g96db324