From patchwork Mon Mar 10 20:16:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 14010646 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 077A9C282DE for ; Mon, 10 Mar 2025 20:31:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To: In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type: Subject:Date:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=I46nKxQBiSzsvmNacEJWpnMZVMsbjrmSRod/YrWic9E=; b=tLxCJBtSOqpujDFzajojIAjaib rHqOR/04d8zGPVtriQiYsgyv+kFgDITROHc7RhIrI/gterT5DD0y41odMIvoYfzMJaPMzmQdGrbbn EwoRM6KtpmV43fsKzeTDN15dmY4WyfzzI5MpKLQRrU7HhlbUziMh0ftZVNI9/Y6mXsBJPgNmqbZvz HbB3x3d8+9HXO+OHxSSVkC4MBP6hNEL7oFcUB43q5vJ8OE1phsggo4q+LO/eQEdjSsnsc0FNfHfev QI7aS2lROuvrHMc2GEYXeueToU2eFfy+q1Qor+9A0sTP8YGi6ZTs7APhdPiVOpQwuCdxcPlQdlSXq imW+WgAw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trjmr-00000003spf-3me8; Mon, 10 Mar 2025 20:31:45 +0000 Received: from mail-francecentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c20a::7] helo=PA4PR04CU001.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trjZK-00000003qYa-36z9 for linux-arm-kernel@lists.infradead.org; Mon, 10 Mar 2025 20:17:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ohjcOWnDH31T+vjhONpR+l7/qTy3jpVh2arrnnB9q4+/cwDC7hyX8OS7bx4dAAe3bw3Can6shKpsAc54LmGxELT/LCXMJfEqSziBl8TCF20Qv0qQNF05MvE2Zj4nlJUJ2y2QulCx25uUXjJLlqiYIQJvUX/huG+NENuJAozO8XlbwQ4whxnt1NUXV2O+jFpoy7F7S/qJ7meVBVj5rYV1il37ufJE2e0x0singcMnrbae/V237ArgrB4PDk+e2O5YRo6lbIlKXL8eXXLp5Kq9ALyecXK2OssMlWuJ4afYIyWKADmNQCmrvDQhE97qunK8QuzWYHJJwDvSehKJze/FFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=I46nKxQBiSzsvmNacEJWpnMZVMsbjrmSRod/YrWic9E=; b=f2crUR652oU4qTJEaHjL+JcuiQ15RKYmGjoPQ0gQIm0uEhoKKpvx2WEgKsOnDxB2w6s2G5wgficpbMrgsYvEAXB7K9EJJB8Lp6EE5Cs0MJ3ZDhJQSrdR70fa+5NWqbZOMoxGX4wBNfWIVdyJkXltnRj1Aa5hYpYUBvxSabBQsB6FO3JhS2VJXV8cZvRwEjyMbERlwr+iMh4LrOiT93ihK9q/R4rHwJYhsF+kB1+aKaSvBgSC82B4Asn7xMTk/WlepGUREr/HeR64LU2IjpP3DaJkddEs/1cKKRqbRD/j+7ffm4XlhhHUOROe8K/dJqt/K5uvElzOsZD5P3c9x1S2fQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I46nKxQBiSzsvmNacEJWpnMZVMsbjrmSRod/YrWic9E=; b=YsVo7dKBvhZRiePkeYO5FaPvdHUqwiGfBVUmc7r5NqAaRkQ+7Q1BoFZ3htrldjfxlOT3tCrUH5SM158hoBW4Dp8RU60WrEdFmtuzJAEgQfppKqbrsoAr7W8wJiaMj9Mnv8cZuTUwIivjkdCVDd6+gz+KpEv/KkbxVvahvaN9UmIyeHxiulAk7dd8jwIJ6I0R2lAhggzbnUejMi/WyaMDP5+m2NvfHRL4Or9K7HlSMxmhaRlo3RopadD7/WFfSnW+Yp9FUVsXKA6bT2C9ySM/Jsz7fqyIp8JPt+nQswaHmyahdwT4YlUpGp1Jz9ugQ5JMGX0toT+QTndu6DxTDgoVfA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by AS8PR04MB8261.eurprd04.prod.outlook.com (2603:10a6:20b:3b1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 20:17:44 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%3]) with mapi id 15.20.8511.025; Mon, 10 Mar 2025 20:17:44 +0000 From: Frank Li Date: Mon, 10 Mar 2025 16:16:43 -0400 Subject: [PATCH v10 05/10] PCI: dwc: Use devicetree 'ranges' property to get rid of cpu_addr_fixup() callback Message-Id: <20250310-pci_fixup_addr-v10-5-409dafc950d1@nxp.com> References: <20250310-pci_fixup_addr-v10-0-409dafc950d1@nxp.com> In-Reply-To: <20250310-pci_fixup_addr-v10-0-409dafc950d1@nxp.com> To: Rob Herring , Saravana Kannan , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas , Richard Zhu , Lucas Stach , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, Niklas Cassel , Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1741637834; l=4970; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=QhVF5V0DVVvhMdwW4CUPAVPj/0hNpWzMoasf1XPM7SI=; b=oWeL08AV8kS3gF/j389YC8VnT3cApm29uf2dHqLBicwZKwv5LFKLxDff6cZ4J3RdSODMWJPP8 IQU/wZJNXrNDP2jsAU+UEKJhSWBYKeLpY0WNJCJCmEUiqL5x3is9Cp5 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BYAPR08CA0058.namprd08.prod.outlook.com (2603:10b6:a03:117::35) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|AS8PR04MB8261:EE_ X-MS-Office365-Filtering-Correlation-Id: 2440c4f4-e6a6-4544-d8f3-08dd60109dcb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|7416014|366016|1800799024|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?sy8TLPtbTcfg0erh4lQqHWaFUNdj58s?= =?utf-8?q?qbldhF1F03yMszJSjaz+S2wK0KS9q01iPyneM7moplTbkGwFyKlyzS9Hs0tl3zdsB?= =?utf-8?q?LCaI3O5Lv+B8eNA1NDkzdRJ1QgraZXmazLm5k+nqGrfbVuot0n9XeHbk2LQdCWe4M?= =?utf-8?q?qmrx4rvbB0dIGQ0zDKoYKNZEbSZk1gF0a/sIbNntAAYONrK/AOVwsEAmDOnSjIQt3?= =?utf-8?q?FqMbjpxw2yaWw3LzielJ046Oosu2Z6hHZAerNLBS6wwNvWJKut8LqZT9jZc5Fk49D?= =?utf-8?q?VhU3femKPCEYk3hiSt9cTDZueLsPmWaQo0BL/u0xCe875Gkxa5NVfF6qO32UgetTx?= =?utf-8?q?1U17MNI0P75XM9DwvQgIKM90ovAGfP3bArRBoPGS+7bCEmmS/h/1FjV8updvtNrg6?= =?utf-8?q?7WZ5AGWWTudZ1fqgFOUZW0oNDzkGRNo1fuHev/naKsHPEXd+h9xWtZGO19+xpIU9N?= =?utf-8?q?HxG2f4VfztPPyGu7oMP/PIXcOJkxWwBcqDAXPKwYlHUFdC4MbGN8M7ietALsxkGfC?= =?utf-8?q?8/N6X6Ith+eceMJuB4pHl9PRVBxOuKlIp4DH7+yu9bBdOXbOlew5jG6HCL5N16LZ+?= =?utf-8?q?FT8Ek2wHTE2Ye+Zrsin+KP8Zm4kBG4Xdhem3orsVRZx6RxACmcjRFY2KlQyF1p7SG?= =?utf-8?q?FILE3WNGbcfm5I9HcY5lXGTh+KsLByQr2tpaPNG4JUG3zoVBqnPKK4Z9FzVPGLJCi?= =?utf-8?q?B+VxfL6IoXLkvxszd/AElOVlGKLPqOaoWjAT9hoQ6P+jt+mW/wbHsYORER89opsJM?= =?utf-8?q?A+pvOEfmNk2B39si2UzxYqUfaN8oHN9PJpu8IJBpBOkcwyWIjhXmpBNeXxaPHPQAi?= =?utf-8?q?hlrjMef42tATBzJmZdLc+6zyfNs+Dvmzdlf5h+xUfmUrHUR1C/ZPUAX8aQkYZf/yM?= =?utf-8?q?5aUEOACfiZQNM8JwoGdosnts7ragwIKJK9ykw6HkViivSwY5bs5ulFOBIr8s/FHVc?= =?utf-8?q?ZMOF7KKKVigp6NKMtkHJsEUXmZpQnoisrUAvOEh0XYJ77bZ+GIlKR2Paki5DvzT9X?= =?utf-8?q?4xDr5bwSbpFW/6QNb8/v7qaV20M+h8vV3e7E3RwIUJk+4C+ra3QHjThh7bAWnY16l?= =?utf-8?q?fc8xy/SCEQsH2YyysXf1UDsu6YDoU/zGYjXz5jVNLL+IQpOn2uOeCfxc1ibjIi4aF?= =?utf-8?q?at5g0SGV/JE1yTw5QEAqDB9LoNRu4C6BOOU+jszP0x/0GuDiW/M68sZdt2XDdxpMO?= =?utf-8?q?4cZjsIjCQOUNW4TXfISERxCaxjT+2yzwxb+XAFlp5Prrxz1NSAaon6kNAPg8U9ZbJ?= =?utf-8?q?8Db9NlFn2mJQ6CZaMpx9uY6etHQP2l+ytYxIj6pSMi4/qPNJx4sipXO1woUoD8w7l?= =?utf-8?q?shmJf0LCojuZYNUNW2jVVS2mxmmLqJ+/BajRplqyHKWanacsHKebiRkYKI+0xLjfe?= =?utf-8?q?9pxNKMU9FY1Tg6o6ow/LXsSkPAxoI07bg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9642.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(7416014)(366016)(1800799024)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?OK7sWMqUKgv9O46e7zPVVHrZXwow?= =?utf-8?q?6Bv/0WriLQ1iqDddp5KFzgHMpc3fc1pbWG0fbFp4GvhCh/hU7mphZkRblWhkPI5ER?= =?utf-8?q?OHW21bLA3V4GAJ/9UKIpzFu136YGkU0mi1D2xNTus60NJ37C+Bo84Q2uFxpnK/kpy?= =?utf-8?q?eVzvtBPCk9AAYwVAR7Ow5IjeOa3a2OVoLYWbNsA1IN4U2MFmQK33rMigExYdqWAFG?= =?utf-8?q?wuZQfp9QJMVe96vX0++whLgBoqZPVc5DSI/1VN+TMQnJwKpkVbWQ1uz9aNTGsuEDn?= =?utf-8?q?h2V+GxnhApEB8xO08eEgtFeuwkYYft4aAgin2+Gp18Ecgb2EF5N3xDzDmF5Hc31FT?= =?utf-8?q?t4RSLQM5GolglTmJ0uy7On5owoFycfnJi/y4u2WN54JRLsZyENRbju14/LT+GZtJ2?= =?utf-8?q?tdRCb/chZEuoxyPcoixG123dUYds9mx1KEcPF0VmL9nfDNmp7v2ib7Eb31KB+zQAM?= =?utf-8?q?Gk8Acvkapezi+c2MbIxfzDNsKGtrxY79bx0tFEgHYbjZlfEAlr5RdUmHZ6VL0kzWW?= =?utf-8?q?i2qqKBL22MXzWOZm3O5vpoD9rXQNUzXAiY7Wr33tzpdaseoYkam8bhFk0hTqkgBrI?= =?utf-8?q?IYYFRheDWlDEL33jAF42M9xBOw5j+rPT/uyOms/juWe4g3SJ1OXujp7Rb2U2bgnA4?= =?utf-8?q?bWR85Aw03K/XMDKWta0Ctloo+35HOwA/W0124EhKbtzGqbmjpxPh0VOcO14kxtSht?= =?utf-8?q?kMrDLpK5f6iFMt2t7wGVDbUthrTcIAYuK8gZfLycew6cAFbhoHjjXw/A2haR/7FWZ?= =?utf-8?q?5dmEv/widXbEcOjYGiWRtn1JAtDC3NB3zskTL3ffc45QmbAyNtERjVBX3K3zWSve8?= =?utf-8?q?OtDDs8FkJpryfI57sg5GyP1xWA/nZNhb6iMnqEHnuY1jpUfjfQzstjgUBoQYlpBFj?= =?utf-8?q?z0H32oI3J5bIAdmqQAvAE32zVN92HPQ9xM9a2F3MDildXe+S7hBInAxLVPDZhMUvo?= =?utf-8?q?aAjq82HA/3hWj6NfKzEzU2NkusARhT2JrayIevkcyyUADViQCtb9Bk3K6GTXFPUTN?= =?utf-8?q?mUm9/ODf8EG/q5UUfNLAdXMe0nofmlFk5qEFyhD7cnuFhdvaQXVSoQCeC3TpeQgdT?= =?utf-8?q?osvdGgxtsgE0//UgVo7+a7Rqm5OE7JhkExQ0rqfdWvYLSLLMwCDb3Op5Ui5dRlCz3?= =?utf-8?q?BdOg8E5SnT0vZxtT0V7O/4Smp9DozmahawZ/wHAj+ujGqRkR8LBOWJYTL/tA77ex8?= =?utf-8?q?Wgz/OdV9bGwIo3hrW3htkpR3ytlRF2KXSuthhOTQ3LZONPgwXtIjA5h2NiVxw7WD3?= =?utf-8?q?O1E39sLU4dc9+hMdJL2nBY0Fo6DgK0FzeXd9MVI+NyLU/TwO4U2/+2aD8aFdIg2YW?= =?utf-8?q?xBXHPXvXaxoFP4InoMwEgPGtfUi6Y7KBhjsr18JvHLFYr+lzkZHbMPDXX2gTM/9e6?= =?utf-8?q?n/U6ltm6Jh4jsXABuEOMnrcQ/eWIeCDIW9Ae+Gx23N0V1CF6QxnKK5gWP3QVj8Cl0?= =?utf-8?q?pnHHCHl8uX1JsCH0xLSaj3gTJnH5UD7CTqAYQQvYJjO+QEKlVn1rd7ew=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2440c4f4-e6a6-4544-d8f3-08dd60109dcb X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 20:17:44.0877 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0l18dtgLjP9SUNPPGH73bXXeY5N3MO4pRTQ3uPervCpIXaETcoif5oE0lb/HZ7S3UGMSQUWXflbMrXMYEfl5DQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8261 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250310_131746_942219_6DC0911D X-CRM114-Status: GOOD ( 14.10 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org parent_bus_offset in resource_entry can indicate address information just ahead of PCIe controller. Most system's bus fabric use 1:1 map between input and output address. but some hardware like i.MX8QXP doesn't use 1:1 map. See below diagram: ┌─────────┐ ┌────────────┐ ┌─────┐ │ │ IA: 0x8ff8_0000 │ │ │ CPU ├───►│ ┌────►├─────────────────┐ │ PCI │ └─────┘ │ │ │ IA: 0x8ff0_0000 │ │ │ CPU Addr │ │ ┌─►├─────────────┐ │ │ Controller │ 0x7ff8_0000─┼───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ PCI Addr 0x7ff0_0000─┼──────┘ │ │ └──► IOSpace ─┼────────────► │ │ │ │ │ 0 0x7000_0000─┼────────►├─────────┐ │ │ │ └─────────┘ │ └──────► CfgSpace ─┼────────────► BUS Fabric │ │ │ 0 │ │ │ └──────────► MemSpace ─┼────────────► IA: 0x8000_0000 │ │ 0x8000_0000 └────────────┘ bus@5f000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges = <0x80000000 0x0 0x70000000 0x10000000>; pcie@5f010000 { compatible = "fsl,imx8q-pcie"; reg = <0x5f010000 0x10000>, <0x8ff00000 0x80000>; reg-names = "dbi", "config"; #address-cells = <3>; #size-cells = <2>; device_type = "pci"; bus-range = <0x00 0xff>; ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>, <0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>; ... }; }; Term Intermediate address (IA) here means the address just before PCIe controller. After ATU use this IA instead CPU address, cpu_addr_fixup() can be removed. Use reg-name "config" to detect parent_bus_addr_offset. Suppose the offset is the same for all kinds of address translation. Just set parent_bus_offset, but doesn't use it, so no functional change intended yet. Signed-off-by: Frank Li --- change from v9 to v10 - call helper dw_pcie_init_parent_bus_offset() chagne from v8 to v9 - use resoure_entry parent_bus_offset to simple code logic - add check for use_parent_dt_ranges and cpu_addr_fixup to make sure only one set. Change from v7 to v8 - Add dev_warning_once at dw_pcie_iatu_detect() to reminder cpu_addr_fixup() user to correct their code - use 'use_parent_dt_ranges' control enable use dt parent bus node ranges. - rename dw_pcie_get_untranslate_addr to dw_pcie_get_parent_addr(). - of_property_read_reg() already have comments, so needn't add more. - return actual err code from function Change from v6 to v7 Add a resource_size_t parent_bus_addr local varible to fix 32bit build error. | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-kbuild-all/202410291546.kvgEWJv7-lkp@intel.com/ Chagne from v5 to v6 -add comments for of_property_read_reg(). Change from v4 to v5 - remove confused 0x5f00_0000 range in sample dts. - reorder address at above diagram. Change from v3 to v4 - none Change from v2 to v3 - %s/cpu_untranslate_addr/parent_bus_addr/g - update diagram. - improve commit message. Change from v1 to v2 - update because patch1 change get untranslate address method. - add using_dtbus_info in case break back compatibility for exited platform. --- drivers/pci/controller/dwc/pcie-designware-host.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index c57831902686e..eaa6dd4c7edda 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -478,6 +478,15 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) bridge->ops = &dw_pcie_ops; bridge->child_ops = &dw_child_pcie_ops; + /* + * visconti_pcie_cpu_addr_fixup() use pp->io_base, + * so have to call dw_pcie_init_parent_bus_offset() after init + * pp->io_base. + */ + ret = dw_pcie_init_parent_bus_offset(pci, "config", pp->cfg0_base); + if (ret) + return ret; + if (pp->ops->init) { ret = pp->ops->init(pp); if (ret)