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: 14015338 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 04F4DC282EC for ; Thu, 13 Mar 2025 15:49:24 +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=zOfBKRRfaGBGa5Qzq4aqysziCpQia2/6D92XcGaeJF8=; b=eIZFLiyWA4AVm0/bSfLGE+BDYs Z22f2tnlFqtIzr92BFqUdFC5UE0mL8r6LT5BmwqNVFydEXU51kX/wVm8ky+sht3HQZnRbiZjWevdr Yr3e+X6/fMDRakV6XihT9cFfzWAnd/FPTsi45eUK9fZp7A+0rz7cZyQCu0HPX9tfR44mgPAM/xD7M I+zTb/vPtYILILNcDfCC9qcdcUPE+P/XbMHrLQ+ig7rXANbJqUTbPtfsmF1ns3VoK22c38sM5Yj55 lcgPfyayWGB9YVyJIlywRHDuv5M+AidBQiTb8gagCptB8jn+npUUOXuHaCnStBSx4YbgNeH80NB7c xn5U8DOQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tsko7-0000000BhvC-1lpg; Thu, 13 Mar 2025 15:49:15 +0000 Received: from mail-westeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c201::5] helo=AS8PR03CU001.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tskeW-0000000BgZT-21uE for linux-arm-kernel@lists.infradead.org; Thu, 13 Mar 2025 15:39:22 +0000 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) 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250313_083920_682198_DA67025C X-CRM114-Status: GOOD ( 19.90 ) 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 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) {