From patchwork Thu Oct 27 08:53:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wenbin song X-Patchwork-Id: 687515 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3t4MMH6vBbz9t0w for ; Thu, 27 Oct 2016 20:40:42 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BF93FA7548; Thu, 27 Oct 2016 11:40:38 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wo0qlrj8eRrD; Thu, 27 Oct 2016 11:40:38 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2A3E74BDBD; Thu, 27 Oct 2016 11:40:38 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id F356C4BDBD for ; Thu, 27 Oct 2016 11:40:29 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9sRURgFUp5-j for ; Thu, 27 Oct 2016 11:40:29 +0200 (CEST) X-Greylist: delayed 1103 seconds by postgrey-1.34 at theia; Thu, 27 Oct 2016 11:40:19 CEST X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0086.outbound.protection.outlook.com [104.47.34.86]) by theia.denx.de (Postfix) with ESMTPS id 2855E4BA35 for ; Thu, 27 Oct 2016 11:40:19 +0200 (CEST) Received: from BN3PR0301CA0009.namprd03.prod.outlook.com (10.160.180.147) by CO2PR03MB2374.namprd03.prod.outlook.com (10.166.93.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.679.12; Thu, 27 Oct 2016 09:06:10 +0000 Received: from BN1AFFO11FD054.protection.gbl (2a01:111:f400:7c10::101) by BN3PR0301CA0009.outlook.office365.com (2a01:111:e400:4000::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.679.12 via Frontend Transport; Thu, 27 Oct 2016 09:06:10 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; lists.denx.de; dkim=none (message not signed) header.d=none; lists.denx.de; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD054.mail.protection.outlook.com (10.58.53.69) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.679.5 via Frontend Transport; Thu, 27 Oct 2016 09:06:09 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u9R963Xf017836; Thu, 27 Oct 2016 02:06:06 -0700 From: Wenbin song To: , , , , Date: Thu, 27 Oct 2016 16:53:27 +0800 Message-ID: <1477558407-5883-2-git-send-email-wenbin.song@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1477558407-5883-1-git-send-email-wenbin.song@nxp.com> References: <1477558407-5883-1-git-send-email-wenbin.song@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131220327698054039; (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)(1110001)(1109001)(339900001)(199003)(189002)(33646002)(104016004)(48376002)(36756003)(50986999)(626004)(92566002)(2950100002)(2201001)(86362001)(76176999)(50466002)(19580405001)(19580395003)(97736004)(5001770100001)(229853001)(81156014)(50226002)(5003940100001)(11100500001)(5660300001)(106466001)(8676002)(81166006)(2906002)(77096005)(87936001)(105606002)(6666003)(47776003)(586003)(68736007)(305945005)(7846002)(107886002)(85426001)(356003)(8666005)(8936002)(189998001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR03MB2374; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD054; 1:KZcXwxArDs4IQTrpJPNPlD+6x3t4F6od2CF/nm1H3wcwsaf0Ugu1Lws8HW8PqShAcjPezGIZ29+BAh2rtogVAAlTF6jTmG4oPZrhL6qNbAvEqYS8FjHDOPuPTpuGmzhmL/4b9yWiLnBOOKtJ4exehr8ksLwGRvCNRSq1ANGITFuyl+LJuD16TelJPnogZI5MVl86MkLrUGZsKihXnLcIGtr8l1oOR8ofwJZeERJdi4SYsEiJdKUdtL6PPGaZxrmjUvL7o0IUNsKkAqBTWfsoYrChlqBTxU5UjN4KC/2C93t3Nlb6HykumCZO8PNQXEKnqSAIwpUT5F9nETy7RlUai3nW1EZ/7gkgMHn8hZ5aUB5tO7FV4lWEIAPC+JqUKtevjajPj0oo3KynMBJOlKHpvI4zelxGAWzB248MtTzgqGTgqN4D6Sf1VxHn7E5O9sze2WllZain+jb3Uuxdr8AB2+4mzE2uWhnS3z4Eql0bs/gNarpBzn5XjlcTVTrFotwjZrWxG9aLqGMzvyNnlM/zWLJCftrILvWU09vB8KWOKowZSqwVQf3YSov/gYTHkeketlrObS69kkr9Bo9tHUkDh3UMuJjMyCPFPBdYs66InxRhDjKcx3tRKpNgPqBohKFJ MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: ba2211a5-13ba-4b94-5a38-08d3fe487e35 X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2374; 2:erG+dnOIXuCtS4SeIyYQPOQ9V3aC+yRYrQhaiqgete4P9wEYnC6j2B19dTZjcVo78EWkKKmudjsY8EdZKhaJevIJz2ZZNZVktoCe05MF1MyuPsJpbzL3/sFc4NeRRLeW9niKQd4f19n7ve4z9wYS3H1bbjiQm5KqUWpnNb39UrJlOTIH3nP3g5jRkmylAQmYsC5T0+y9axlvWoHJcR5IAg==; 3:dWtjdccVFuUHj+hrQCkiIaYb2cJTojOBXXDQDw7Cg0TlGppP2L6j2B0kJqWiOUWtPk/iQXX7sx0I9z8UsHiNy238Ms3/EEeoR0E/sIY4D1y/oC7nr7TL6KTmchiL1nh0se3LqvLAAqjoJ1a8smObaOzpIs9XDGeiGOYuCeo0d+VsZNNFtiHmDcSNwxAcJU2pZu1d7On2M53qsHuhnnWkmVe/Vxf/faFj32H89553icF0vsMAXCovJNRPKCOJEtgH; 25:2S1C6MwN3qoHGVm8VHuDte+fLdPAg/RJKJbpohhjOX3BmGwZTymLjdtWzeEKbRl3nCTRD32Oz5PRKdFr6rv2p53zI+bdt1IVI82FSKe7x1jcdhR/bDV/dVr70VnpKQWK3Z4O8kSmYsDPilEvUuBl0rECOHsWIJk7J3Kqrb8jQ3sf8ISykDcpHicAfV2ZnoVKwNkdqzHy8XOZuseGqd5e+lW7WPAUjHfyJcl91oVuHYNhbdc0Y9G7lbVV//VGRvZAPXACObX4iLT75vruQ1CfxSEe+MRN5NLHdsW5CUAh1eKCATH0AfS3/LlCsBtzYdWku2NbUmsQ248SUx16IXqTM9p6hMmnUSHN0zwzLTfrHkS3SMPTttUy0/eNqyJxMDhDPsd7kOGFbU1E+TJPMxgITBxCSRz8RkocHP2C2bImqNm669lmfF/0QGnatMtVmE9iRGwicken75LCH+4/Xou C8w== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO2PR03MB2374; X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2374; 31:Z1JRVecmOvhh0B0zOx3wntWMEWPwD8XIFR8hkBeJWmPgO7vuJbo3hXth01ypWUGwB4BfubsZ7bF/WiICtLyRtJP6/qDaJLyYQLXSPNMPzP+zsF1cW3QvA3SqBnYndQ656dvnYdpXMgkyIaf+/fSwWCHKBqL53dyECcSHMSRTmO679PkQ0pjYoNjA/iteewtxGbzR+Mt60ruZmAqGr8OdRBGaUTHD6d/15dFqXB9e00B8MAGIqNzdAr2fiOJ8LP6/xqEIO1Rh6c8P5rKgOQlCq80E90fOphyl3sNL+bjugDI=; 4:LRxEnI4bn63dZdaHbY1b6anoH9FRd0B+69KuY2ZoX3IWWOZSUF2AEG5w9fW7JklE7esFeWfnqYBsiiERYypgkN2uRU6yTN14OTNyhWNXQgOCSieXT32aKzpGYkhtQCaxhZOcjicxh12K9Xe6Yp8MDOwu6Tt63LbmKa7eecJPo34aLQCz0+dsYomLeE0mab9x3dKhzfYdRbjUNnugIsUJIY/v2i6PcmnQdz133JKe3IjHOXT3cN/wYzB0IDH09j9c6MHcnTggdINSDvpf9lO462vAQ90bg77n9auKT2kqrcn2SqvqsWwdc0Gq5eu8gWN/N6b2EyGFaMe6/EcuQrzbHbriYZXuhfWwxypkcXggXriicXH5QhmDpJCzaV4JT0msZlc44Z7qR8L9dUmWGxm9hIh5W7SMToU4mypOI6T2k8ycYfa8IGu1n40UcNYMjsYDpc3LnsDghS8YDviCS/oP1wZFN4iuZkyUYGsH5t8q2j93zQrB1x2A0h3+0pu1roahSPD+R+7tckDLw3HlZeRHZ3f6sjh+vM9eXcObyEzqfLAU3uRnPu1KWFzn5YBGDqRA 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)(13023025)(8121501046)(5005006)(13024025)(13015025)(13017025)(13018025)(3002001)(10201501046)(6055026); SRVR:CO2PR03MB2374; BCL:0; PCL:0; RULEID:(400006); SRVR:CO2PR03MB2374; X-Forefront-PRVS: 0108A997B2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO2PR03MB2374; 23:ihu/+vIZTcklcuyFZOxownfzwfyotCH4CnG7qVy0Z?= =?us-ascii?Q?mqPsP1uq97LkEe925XDUPejK+y/s8FbHQEIRGp0kMwaf3tRfP8O4KC/kZrWZ?= =?us-ascii?Q?AqHYSCcf9GreyIj4vxpZi7XQyQYTPctETRkTOGewz6Ft2cdFm1Q1nXvvTraX?= =?us-ascii?Q?udMN15YflBFceIm51GyORmUhBUh7BXwseYo6P1MnLgoTr12aAUD7Sm/+2FVP?= =?us-ascii?Q?iWfLuSMjxoNIveJC+x7WesVHzHjZtBgNCNg17ZCH1RRGTlU/INWDZpa3YSco?= =?us-ascii?Q?L/DlFGba4zjBqM36qBtv+8zk15H71G+vLrVWDkuA9qgvzMja+fEPRI20MaNR?= =?us-ascii?Q?tWZIotCu0lJn4nF+VOXfJfHZzwburE/aGQaqPCKg5IOem/iDBvRgf3aTXrIX?= =?us-ascii?Q?/pKmU1qHmS6A8nYva3z0pY5XmNRN7P2Pe504rBRIyq6PrOsqMmtcZcHFU5FQ?= =?us-ascii?Q?me6UFEAx4UUpyyGRm+PN0D0SLcWVBowKKzYpHC40zmX51fGS7l2u5pgO5S/9?= =?us-ascii?Q?bE0glgJOa/LVSdaWFRzTO3NCbi25YKF0nrPnoOOWfaBROSPL6NL8czDJRkaP?= =?us-ascii?Q?i7OHe0vpnT/gkpi6OWIeyHrdCa+eZWRFNWtwe06QGTazMwhwkMNuv2Znct+i?= =?us-ascii?Q?/YpBv8/H0CPAtIhd4Wb/phPntURXdI96AtFqUvUqT1JSskW7BsqyGkD2s2yQ?= =?us-ascii?Q?QpeEIv/fbARy40Hj5I3+SnmnkHVEzVmKRNXpd1LsIgtQinwXPAmvnbKMYktW?= =?us-ascii?Q?CUiCbVAIdpO+VN64j43Jm/zt8S8rDBjJEcg6c/y/1JHTzh+SSVtCP1vCT9Rx?= =?us-ascii?Q?0cHs1AYZ/50elWbHpoCnD/wdGOsX/cktBUaszRiDiFmg/mf0DcBKfyOoQyad?= =?us-ascii?Q?zYVGZeT/S3CXaoZMWyBbwCfTIsx980/ksBztdVNvAderydguUvo3js1FWOnP?= =?us-ascii?Q?UTZzcNlp0s9yNtbkIY3OZr0T0alBQt17R7GiaoGXljhpzp4KvgXMXId8dgD+?= =?us-ascii?Q?FAaq4kTazTL0o1gbhdu67XPFQwvMKea7NnwFi9h2uq1C+8qOGi1xRwInFgqv?= =?us-ascii?Q?XgT9VmNULQxXC2BTi0uX+V16J0DUKqNMBkigAKRAfZXuaYCPjsclvvd1zHrv?= =?us-ascii?Q?8yM+RqHtnxLIpNHNeUKdg18nJpZs8JuKF2czeghi3gMw9PlTa1kDABu9GPd/?= =?us-ascii?Q?lhffpT3o31WgFGncM90Cc71TsnvW2tKOaKi?= X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2374; 6:pVQYduxZV/Ouh8XjJXZZfAl6++6cfo3rsX788Xo2JGmZXwwH7GOTsie4MIJOU/e5fK9RjBoveRlgYBG8Y+VOydDM1NHK8WMlggYPDJMWgYolCmiLiGYzGjIE//V9ELpfReiLhxlamANqmIy8uE/XSNFUoqK8sAtvaWrUl8O6evnDeytXayWoRH9FkJk8eyI/SnjeroXqe6JuTF2phqpBjDCgLDtTmbxEEI+tIfL/ax96aA3qvXi56Tdzg+P18pVcbNV//aGqVHfZPbOdgWWTNQT8VF9DQeWcF+3UT9qbcqKxs2xrir7Dn4CGcbBG4PV0; 5:GDtHCeottK78VHqzt7tP+oOEuBLloe8ZgbESDF9glB3NA562xeAQYqGrDxmP2WzpMOB1LNdK/iuxIJc+uJ9q4RPkBAlpqAmhehKiCwH8E1kMvLNq0pEKTbNLub5zaaoPTW/DTNfcM+qGbCkswrWVVpfD5mTksldeicJX+dh5wOyxP4gMMV9k/iNCQBUhY6FD; 24:5rDQcAe+UMhAy/LT0vNJkOq6TUBnpQ46q7Um+KAuzBbPfhfkupfU2m7ASMFuHs6N4RGlsvPnHToZoOGODvUUzgq2XlSts0NZqJeR5YTCE/I= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2374; 7:E3lLeOxJoRswL5GocsCf09TfyTWCTzVPT5vct1a5JIMonDzFZHSJip4zDDFQLXne5lCetPttBdF9/Y9W65epbiFTZJA3HB7L/R1UTEeEG4PM9Q5euyRosJRR8RxlsNFoZ5P/B8NubSx/fTjYbjOIYkJEJT8C+KchzQKrPoAmqvzfZL+9WgmvCDmqhpCt4jKDrhnLgn5u17FKt9yCpYhc7XALuLBwOpZBAicGLEqs55IXsG+5/nj+v93ry3ffHSz6vPZ3yvcwdp4Y9j+ZdJzbIkTeyLdrDxWamz6bSqPJeRRFu2SwIRNicywm2rnV8uiuopBXqkFxTLr14pPw9MfXXOkRrE+mtn2Qcv84zwMntu4= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2016 09:06:09.3374 (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: CO2PR03MB2374 Subject: [U-Boot] [PATCH v5 2/2] armv8/fsl-layerscape: fdt: fixup LS1043A rev1 MSI node X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" There are two types of msi node in kernel device tree, one is for LS1043A rev1.1 silicon, the other is for rev1.0. According to revision number, fixup the msi node. Signed-off-by: Wenbin Song Signed-off-by: Mingkai Hu --- Change in v5: Fixup the msi node used on rev1.0 when running on rev1.1. --- arch/arm/cpu/armv8/fsl-layerscape/Kconfig | 3 + arch/arm/cpu/armv8/fsl-layerscape/fdt.c | 115 ++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig index f415868..34ac867 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig +++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig @@ -139,4 +139,7 @@ config HAS_FEATURE_GIC4K_ALIGN bool default y if ARCH_LS1043A +config HAS_FEATURE_ENHANCED_MSI + bool + default y if ARCH_LS1043A endmenu diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c index e90adb0..5bac380 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c @@ -185,6 +185,118 @@ static void fdt_fixup_gic(void *blob) } #endif +#ifdef CONFIG_HAS_FEATURE_ENHANCED_MSI +static int _fdt_fixup_msi_subnode(void *blob, int offset, const char *name, + int irq_0, int irq_1, int rev) +{ + int err, sub_offset, len; + u32 tmp[4][3]; + + sub_offset = fdt_subnode_offset(blob, offset, name); + if (offset < 0) { + printf("WARNING: fdt_subnode_offset can't find %s: %s\n", + name, fdt_strerror(sub_offset)); + return 0; + } + + tmp[0][0] = cpu_to_fdt32(0x0); + tmp[0][1] = cpu_to_fdt32(irq_0); + tmp[0][2] = cpu_to_fdt32(0x4); + + if (rev > REV1_0) { + tmp[1][0] = cpu_to_fdt32(0x0); + tmp[1][1] = cpu_to_fdt32(irq_1); + tmp[1][2] = cpu_to_fdt32(0x4); + tmp[2][0] = cpu_to_fdt32(0x0); + tmp[2][1] = cpu_to_fdt32(irq_1 + 1); + tmp[2][2] = cpu_to_fdt32(0x4); + tmp[3][0] = cpu_to_fdt32(0x0); + tmp[3][1] = cpu_to_fdt32(irq_1 + 2); + tmp[3][2] = cpu_to_fdt32(0x4); + len = sizeof(tmp); + } else { + len = sizeof(tmp[0]); + } + + err = fdt_setprop(blob, sub_offset, "interrupts", tmp, len); + if (err < 0) { + printf("WARNING: fdt_setprop can't set %s from node %s: %s\n", + "interrupts", name, fdt_strerror(err)); + return 0; + } + + return 1; +} + +static int _fdt_fixup_pci_msi(void *blob, const char *name, int rev) +{ + int offset, len, err; + void *p; + int val; + u32 tmp[4][8]; + + offset = fdt_path_offset(blob, name); + if (offset < 0) { + printf("WARNING: fdt_path_offset can't find path %s: %s\n", + name, fdt_strerror(offset)); + return 0; + } + + p = (char *)fdt_getprop(blob, offset, "interrupt-map", &len); + if (!p || len != sizeof(tmp)) { + printf("WARNING: fdt_getprop can't get %s from node %s\n", + "interrupt-map", name); + return 0; + } + + memcpy((char *)tmp, p, len); + + val = fdt32_to_cpu(tmp[0][6]); + if (rev > REV1_0) { + tmp[1][6] = cpu_to_fdt32(val + 1); + tmp[2][6] = cpu_to_fdt32(val + 2); + tmp[3][6] = cpu_to_fdt32(val + 3); + } else { + tmp[1][6] = cpu_to_fdt32(val); + tmp[2][6] = cpu_to_fdt32(val); + tmp[3][6] = cpu_to_fdt32(val); + } + + err = fdt_setprop(blob, offset, "interrupt-map", tmp, sizeof(tmp)); + if (err < 0) { + printf("WARNING: fdt_setprop can't set %s from node %s: %s.\n", + "interrupt-map", name, fdt_strerror(err)); + return 0; + } + return 1; +} + +/* Fixup msi to v1_0*/ + +static void fdt_fixup_msi(void *blob) +{ + int nodeoffset; + struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); + unsigned int rev; + + rev = gur_in32(&gur->svr) & 0xff; + + nodeoffset = fdt_path_offset(blob, "/soc/msi-controller"); + if (nodeoffset < 0) { + printf("WARNING: fdt_path_offset can't find path %s: %s\n", + "/soc/msi-controller", fdt_strerror(nodeoffset)); + return; + } + _fdt_fixup_msi_subnode(blob, nodeoffset, "msi0@1571000", 116, 111, rev); + _fdt_fixup_msi_subnode(blob, nodeoffset, "msi1@1572000", 126, 121, rev); + _fdt_fixup_msi_subnode(blob, nodeoffset, "msi2@1573000", 160, 155, rev); + + _fdt_fixup_pci_msi(blob, "/soc/pcie@3400000", rev); + _fdt_fixup_pci_msi(blob, "/soc/pcie@3500000", rev); + _fdt_fixup_pci_msi(blob, "/soc/pcie@3600000", rev); +} +#endif + void ft_cpu_setup(void *blob, bd_t *bd) { #ifdef CONFIG_FSL_LSCH2 @@ -232,4 +344,7 @@ void ft_cpu_setup(void *blob, bd_t *bd) #ifdef CONFIG_HAS_FEATURE_GIC4K_ALIGN fdt_fixup_gic(blob); #endif +#ifdef CONFIG_HAS_FEATURE_ENHANCED_MSI + fdt_fixup_msi(blob); +#endif }