From patchwork Thu Mar 13 15:38:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 14015311 X-Patchwork-Delegate: kw@linux.com Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013066.outbound.protection.outlook.com [40.107.162.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E6A8269CF8; Thu, 13 Mar 2025 15:39:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.66 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741880361; cv=fail; b=Ftni6Ek2O1j/rZThUoUnO+buh/5Fl+frXbr9n/EIoDIR//s7Is6inOj8p8QIiWt3MbQ0XbSv44rMfbNAVWQAKd/4w5nIIkaTHrM7LFCiD+qdNCW3PTpdZLGz2lsaaTeZo58XKPrEouFC+U3+uI3RcKum1mb7fBEuLXBp6f2wKeU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741880361; c=relaxed/simple; bh=NZ7yCNLObw1oa719Qp+QmFGXAN1d3NI6LNiebuIMyWQ=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=uSg85uEzKef0b1u4ZC6m+a1OCIJRPpCyk4sbaSJBtD6X6B8Phjdzr9V7dJgGQ9/B/0dvE8XPg66ep3N56eeWXG0GjidwmtiWDrHuIbGqaSSJ+v1TqSZGVCBrLrKj5/QqiO89Kz1EPEC7NS5AqKxm0nUNgr4OgMlUoxCwD6XJaPU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=khYizf/s; arc=fail smtp.client-ip=40.107.162.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="khYizf/s" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EEVXlMKbrAoKJ5uXpR9N7BybdJMeVsTxo0PdGofbz2zfSsSWP7cY2axBvg150KpZ/eaEDzjVCaHYiAeZKvAwdMkTlPZCCiI3HddF6FYk12dds4mvcwk17PfB4A1jYol2id8IjizWDO/qw0sIDwKbh88Odp6e9bc4SxWaoJSDvbg11weRzDu19Z6dhGYrcJNRZlP5FWBpWvB0m5C0Gnu092AIcbkAXPsnwaclO1TsDaMauB6ZQ4iKd90xMSSsw2nPIjIrkknsw7AO043RDZ6LGtWUpTbhPozdI6IgdVVQweJ+1HVXjEfZr9H24FhzLNlPRk4EQX0tI8Zb3Q32nDGfRQ== 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=zOfBKRRfaGBGa5Qzq4aqysziCpQia2/6D92XcGaeJF8=; b=MrwISYOGj5q/MFRJ63A+hzBRFdYtWYNpbsPbomnJ1cE1VMXRkAK99/qR+on3dL47c6C4ntDQ7zQmi1MA31BtFctJ1SKmg+nWqlxQjunGtfW+FHD3v3y2Pi4T+RB2PULqBcYZkCecAIKoiHozVqaPRxhTdOOKeDKZF9Q+7AIq/eoZpkYr4qH99aaA7sCV2jUuKBfvZd2LjXDZNdgteQDNcmAzHJxFMUPSNYAO8vXQw6SOrhQ5Mlq+7zKSZt6POi3EPwu+B/MM+uTNPSAAakMZHkjfs1oEsn5WX6b7hW55IHji2Uy/KNMJMbsjWqMygIEZDWja3sCTLqSRCEc56MhQUQ== 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=zOfBKRRfaGBGa5Qzq4aqysziCpQia2/6D92XcGaeJF8=; b=khYizf/saHWL+5GBOxINlvoMP8hXuxR9j8oLwlih0wJATxxjMWa1l/8xn0qV2hvz+w94Otvg0EKhsQtU9JVBOyfxw+UbDy7Ph1J0lUWx8E+Q9JOricFxR1AyGjVz2mhCmSmOmI9d6QKeg146HtC/4S6edbAg6rY1+l1qZH6R1UPMcLPN09vU7zzFS4HXjWIOUBhrxX6QO8UAhaDjVamUs39kEcYSjgRT30cFPJ45PMza4Nio/fGVdXPl2S7nl/9GBr8LukP7hv6+q3sD42gbTInpsYEyKMROnt/d+ByEgu8cJCTB2nvRqaKVICB/ZT6PZII1Y8Q+SCSZVeJKVSYCRw== 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 DU4PR04MB10316.eurprd04.prod.outlook.com (2603:10a6:10:567::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.25; Thu, 13 Mar 2025 15:39:15 +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.026; Thu, 13 Mar 2025 15:39:15 +0000 From: Frank Li Date: Thu, 13 Mar 2025 11:38:41 -0400 Subject: [PATCH v11 05/11] PCI: dwc: Add helper dw_pcie_init_parent_bus_offset() Message-Id: <20250313-pci_fixup_addr-v11-5-01d2313502ab@nxp.com> References: <20250313-pci_fixup_addr-v11-0-01d2313502ab@nxp.com> In-Reply-To: <20250313-pci_fixup_addr-v11-0-01d2313502ab@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=1741880335; l=5220; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=CAZQ8hzaJMLFQywBKM/Cdf0akVJ63bcoavHcEFXFDYo=; b=exG7uAmmXILAEW7Yr6sM5bkARyDOky8PmiUmGOu2CVUllkR43Zyi8H/TstZZ7k8ZgPdgR+Yz/ Y0iKdubZ01VBRyP+jhRQ/JYgUTauP3GwKFlW9oWY8mmSApYMQ9deCtU X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR13CA0038.namprd13.prod.outlook.com (2603:10b6:806:22::13) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|DU4PR04MB10316:EE_ X-MS-Office365-Filtering-Correlation-Id: be26cbb7-65ef-492f-acb5-08dd62453618 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|366016|376014|7416014|1800799024|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?931++qt1/Q2TS9HopK9t+3Uz2ZEJMd7?= =?utf-8?q?6CYQ/CNB4fzBKsoBOgfHXnUJPPiBXGERt8cKz+oecagM51R8PzJII0z87Sq38F0PG?= =?utf-8?q?zF/p0ZWS//8MPKaF7g/yHGqqNZrdG5R9NP8H8PstTkmAP3XH8h46q37JAFeaISDcF?= =?utf-8?q?sH/kCkNVJPwRChIrlu9sayhMYL0qm4G/Gi+uHME6luLgu+SE6zenWvBJXAp5S9w0g?= =?utf-8?q?sO95HhrtdZu1m7KvP7ivsstLYh6TQv1JW3lBSfrgIVZZHh5xDHWpFtItsSajEm358?= =?utf-8?q?e6D4puLAo9WLbAF71d93MkXHwc/81CmBfD7IMeJFaz22OM24xQqzVH+3smCYblIEY?= =?utf-8?q?fX+sgRyNDgihNkAJYHxKCxxZHJwNhx3M0v9iHPrrtVK6BXqAOnxRD0G0R8zcXgezF?= =?utf-8?q?gebG41XTQLTYRRW2i+k5xytJXh3YFC9C9ZreUSfYH52nsuLuNbu1h9n4XazI8Un1R?= =?utf-8?q?bC/yTa4d2I0wOpX7usx1vrDaTvbh7nbkCviW1fwJ3KBk+F95EMzqr0G9Bgh2kVrpt?= =?utf-8?q?pbXCkaPMtLNBrFPoFoBm0qicas36God90g5ysudvRDWAIHqF0DcvtW5YedQWBJH/X?= =?utf-8?q?yemGyERx/Eo3yTu3sMafjaSxEuJIcD5Zwktd4oLjaJIFJh9Us3sH8pQderwLgOD1W?= =?utf-8?q?BQdINetBJPAnXPMOHZrCFj6nYASadbIVwkH8sCraKZyzeRcVoKA9Dbkdd/i5gUHET?= =?utf-8?q?cojLkOyjsC98MoFZGT5VwtrgJ9id/q2VZeEfdVd5C783Hcnb0Dt7o9lYw23sVDo+W?= =?utf-8?q?L3NR1kepg5LZS78S7hsulPqztI/jejUGYZKotvUauE1+Cc+w3pmrbrfSr/aRB/9Rq?= =?utf-8?q?TZhNGagQJS6PQiScWYriwBO9TacGx/GWhDmxQJSa5ErQVujxERwpsk/ADrYkdabgg?= =?utf-8?q?H53SoImio8ChWuxGapXSViWrXTvWTPqcEhKLQ2HUjwdlPP7f2vRaRButV1iWX5w2c?= =?utf-8?q?3tu2O6KsQ6XKIsJTYRUpxRbVjnGhKtnu9rYGlEIla+LuNsMpBseqnP9O1TtHtf+KM?= =?utf-8?q?3CSoXaWLTCyEqZLs+6RKGmjv4q4JETlVpTf15YRvSRDy6yOUznf4ZmWeGfegmQH3S?= =?utf-8?q?hBkBWd+jKcedZ8o8QguGiH0fMnE6TpPRCJpR0nu/gRjOIs1jn0uStokDZk/HCUjOp?= =?utf-8?q?zT8nlPg/I/ZTTc9YxuBNZSRU0WgELDxyMn0Tgf4mOkgir/CsoeP1wOivjLXvrFuz2?= =?utf-8?q?4ZgxpdI2vESw3SNF654ChWDtwSlyQAgvLcHVR68as915ScW0aAmlYtLZ6V5+rcdqV?= =?utf-8?q?FYeQ2jEcJJu6YM8slKxF0RGkZC5Cl+5s7qnYHdzb79b/m+wIG8Ilw2qltt5vLWUqC?= =?utf-8?q?/rvGnBawzpJwRbX4+CWPSGaQahULNrO4pZjMnqsuc5GVJk/zqfX7IzUSgIAnNzRRM?= =?utf-8?q?KI2FX3UcG+MTqpWUUMvHS7ugGwwLEahdw=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)(52116014)(366016)(376014)(7416014)(1800799024)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?iawvvkQbu4McjwhX/5+nRJ1aNXUV?= =?utf-8?q?hYD7DvoqmgU0lcy8NlEE3kgrjAc+1r9vuRGsUGcFgTmYMZ3gBgshmlVp6pDGGcwUX?= =?utf-8?q?BIWHg2sEqnQc4a1vx8NOwb/vuQ4K8KXDMRrbvHbUbYq+rUsHA9/peyr4HXtQo7nAB?= =?utf-8?q?Gb1paLCAf4XeGorZrlSACCdiGg1YuLa1QeW3sbf5N/BW50vMLRAbSHBW5NE8pyKNJ?= =?utf-8?q?6v89MvfeXIHJ50jW2Y11XZvnf6CXiVMu/fMw7W+N0iXWBGivjG3eJNPJJ5evuwTdU?= =?utf-8?q?/jmV+/L4I4O82hVPYE6sa7Er+5zDR+UBFOVuPIDvB8wtCgvjOFvpn3vlayorm8QKK?= =?utf-8?q?Q2ObyFwIgaoAV8l76p/SBGTUh107xA+i8qgvqUkb4EP7AyCGwomAQug0i0FkTxPFN?= =?utf-8?q?pSF8VNbyYvmjWamR5k6NZwK7hEvayto9BVRH/59OtfKqQZHU7nkeAP8IzLcI2pCJP?= =?utf-8?q?g9VD7uHIhatkqBRowEcoz8g4MsSTNUTZlQsauvWOdpc1hz+pbE9NxV3d2RCopLoRX?= =?utf-8?q?Y5Amc49CSuoOiYtDG1HkB66BwSIXzAcOMz1YypXGrPstbrroi3UoqDcDy2AA9ZXtr?= =?utf-8?q?i7iLGjk9NCytU17I0uwxvfv8H3PLhqe+QkC3W/CBqN3SgAlOCvV8lPQUlq7bSfIRC?= =?utf-8?q?WaMIuMqCRpzdpKqUGYKWBMG2tP+9G5+81TxrLr6+LFjKgRepBTRxOsLT2094L16nO?= =?utf-8?q?Et7ZaujEn6lqAYpMUpngraBiPrbsztYqxbkaImI/zrRhdMr1mRZ5+CDe4akP2sb2j?= =?utf-8?q?23oXTnNqkF07LYHmnqlMYNg3GAAGsw75qPLEWrXdQliGYU8Jec0UQRcD7GVDZVuZR?= =?utf-8?q?/YlcovbiSqOcLX13/aSp7fEPWCrqgyIG6eRfSBIwuPtqNy1PsiSzYso2//K7c9YdS?= =?utf-8?q?sbYA3WVp2t9/EcyBFY/UF9y39I15nqOkk6pulPiWy8CR44I5uIvi87zNGUdfOdGd7?= =?utf-8?q?7ovGgIFzaVZHImcUa2jECojK8GcYRaDI23uP8KUi8n3S28CO6LEJirlg6s8YX7Y5e?= =?utf-8?q?aoYybRFvwpvxJkATuLJChNNafgJ+YMbPVhB5W4lSMwEKlLKHMqhLijmA/Qc7CuvbH?= =?utf-8?q?zTErbfFj/94qL3rffaP5djV2+Wnsar6GgCRaz2nWbsWXl0WLMEppWc8FrzKzK/Uy3?= =?utf-8?q?I3+CZjm/1PkRfS0yQpb7K7R35+qVBWH56xCwe8+ivo87T/+YA/UlsrLcW22r7BXbB?= =?utf-8?q?zBvYgyOmJjfNB4Kdh6EAw4UHz//xrOIW9zXWZK6KncGKYTXOKN/uMgwmscg/SXc+Y?= =?utf-8?q?EoYq4FPX6vhkWZu4cbdGuW787zCjI/5gyynnQ1ydhGOCNNfts0UeLhjdULMoheC1L?= =?utf-8?q?ubxAraCld6ckwVGl5wYkntEI7lRVu3HuzVnrqAyW9KnU5yd1kri7+1ZX3WT5ph12e?= =?utf-8?q?IxRNIlNoJKz40UwODp8yhGZYwXjamt4cLIjtiOpMPmOUMIq/j52lPvyR+fzJ8eXwI?= =?utf-8?q?1Szc0JAAPssoCx2IT98v5yPGylI9TFpUUSya/n+f86ZmEh5uq+O9q7rMwt4eO1szn?= =?utf-8?q?F0ZNZvent5U7?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: be26cbb7-65ef-492f-acb5-08dd62453618 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2025 15:39:15.7753 (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: 3f7k8J+eFdBC/xJNNXtwfvu6FTneeNHIKqeW3gX7iVMsqxXTss0zgPTvLkJy4cZZs7bNru+6Z0ZHCKU84PNLUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10316 From: Bjorn Helgaas Set pci->parent_bus_offset based on the parent bus address from the "config" (Root complex mode) and "addr_space" (Endpoint mode). .cpu_addr_fixup(cpu_phy_addr). (if implemented) should return the parent bus address corresponding according to cpu_phy_addr. Sets pp->parent_bus_offset, but doesn't use it, so no functional change intended yet. Add use_parent_dt_ranges to detect some fake bus translation at platform, which have not .cpu_addr_fixup(). Set use_parent_dt_ranges true explicitly at platform that have .cpu_addr_fixup() and fixed DTB's range. If not one report "fake bus translation" for sometime, this flags can be removed safely. Signed-off-by: Bjorn Helgaas Signed-off-by: Frank Li --- change from v10 to v11 - add cpu physical and parent bus address information when no equal - remove "Using this flag also avoids the usage of 'cpu_addr_fixup' callback implementation in the driver." for use_parent_dt_ranges. - change dev_warn_once to dev_warn because only call once. change from v9 to v10 v9: https://lore.kernel.org/imx/20250128-pci_fixup_addr-v9-4-3c4bb506f665@nxp.com/ - use help funtion dw_pcie_init_parent_bus_offset() because both EP and RC use simular logic. - still use use_parent_dt_ranges to detect fake bus translation for no .cpu_addr_fixup()'s platfrom incase block exist platform. --- drivers/pci/controller/dwc/pcie-designware.c | 48 ++++++++++++++++++++++++++++ drivers/pci/controller/dwc/pcie-designware.h | 12 +++++++ 2 files changed, 60 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index 9d0a5f75effcc..f17a25fe55a5b 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -1105,3 +1106,50 @@ void dw_pcie_setup(struct dw_pcie *pci) dw_pcie_link_set_max_link_width(pci, pci->num_lanes); } + +int dw_pcie_init_parent_bus_offset(struct dw_pcie *pci, const char *reg_name, + resource_size_t cpu_phy_addr) +{ + struct device *dev = pci->dev; + struct device_node *np = dev->of_node; + u64 (*fixup)(struct dw_pcie *pcie, u64 cpu_addr); + u64 reg_addr, fixup_addr; + int index; + + /* Look up reg_name address on parent bus */ + index = of_property_match_string(np, "reg-names", reg_name); + + if (index < 0) { + dev_err(dev, "Missed reg-name: %s, Broken DTB file\n", reg_name); + return -EINVAL; + } + + of_property_read_reg(np, index, ®_addr, NULL); + + fixup = pci->ops->cpu_addr_fixup; + if (fixup) { + fixup_addr = fixup(pci, cpu_phy_addr); + if (reg_addr == fixup_addr) { + dev_warn(dev, "%#010llx %s reg[%d] == %#010llx; %ps is redundant\n", + cpu_phy_addr, reg_name, index, + fixup_addr, fixup); + } else { + dev_warn(dev, "%#010llx %s reg[%d] != %#010llx fixed up addr; DT is broken\n", + cpu_phy_addr, reg_name, + index, fixup_addr); + reg_addr = fixup_addr; + } + } else if (!pci->use_parent_dt_ranges) { + if (reg_addr != cpu_phy_addr) { + dev_warn(dev, "Your DTB try to use fake translation, Please check parent's ranges property. cpu physical addr: %#010llx, parent bus addr: %#010llx", + cpu_phy_addr, reg_addr); + return 0; + } + } + + pci->parent_bus_offset = cpu_phy_addr - reg_addr; + dev_info(dev, "%s parent bus offset is %#010llx\n", + reg_name, pci->parent_bus_offset); + + return 0; +} diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index d0d8c622a6e8b..bfed9d45aba9f 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -445,6 +445,7 @@ struct dw_pcie { void __iomem *atu_base; resource_size_t atu_phys_addr; size_t atu_size; + resource_size_t parent_bus_offset; u32 num_ib_windows; u32 num_ob_windows; u32 region_align; @@ -465,6 +466,15 @@ struct dw_pcie { struct reset_control_bulk_data core_rsts[DW_PCIE_NUM_CORE_RSTS]; struct gpio_desc *pe_rst; bool suspended; + /* + * This flag indicates that the vendor driver uses devicetree 'ranges' + * property to allow iATU to use the Intermediate Address (IA) for + * outbound mapping. + * + * If use_parent_dt_ranges is false, warning will print if IA is not + * equal to cpu physical address. Indicate dtb use a fake translation. + */ + bool use_parent_dt_ranges; }; #define to_dw_pcie_from_pp(port) container_of((port), struct dw_pcie, pp) @@ -500,6 +510,8 @@ void dw_pcie_setup(struct dw_pcie *pci); void dw_pcie_iatu_detect(struct dw_pcie *pci); int dw_pcie_edma_detect(struct dw_pcie *pci); void dw_pcie_edma_remove(struct dw_pcie *pci); +int dw_pcie_init_parent_bus_offset(struct dw_pcie *pci, const char *reg_name, + resource_size_t cpu_phy_addr); static inline void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val) {