Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp5645614pxb; Mon, 28 Mar 2022 15:26:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwopSYc31kArKwPtcYxSw50FZDVsHbKgvSC17d8ZGLlmgAe1Ivn/3ZwENC7IZivuaqTOzQb X-Received: by 2002:a05:6808:188a:b0:2da:5026:3663 with SMTP id bi10-20020a056808188a00b002da50263663mr700556oib.79.1648506389129; Mon, 28 Mar 2022 15:26:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648506389; cv=none; d=google.com; s=arc-20160816; b=Tsh/33iQP4xCbUz1+rmlcg31ZatcC4e+Q/LDvseXcQm0aTDCL3FYhTg/M0usyNQS7l QjTD9Rt7WAIDB0tX2b4spveZvX5/nFYcujeZWUKb2NP61xlz1CgT7lLC16WEjhZmkAIS 0RbFroQ8L5I1JCDg714tbOmtwhNcTCdDxha2pTMV1MqR+KV2bxTvriL4aF4s4HwxbDk2 FfkcWSIo7XRoW+3+0XhfUvKJwSP0V9eI3OwUhouBQIlFdr/2CZl0ZDcKzp+2f80NYtij AMuv4xDX76y+oMtHbQ2Do5V/DqNP99DWwIMooAT+/aBRa/PXSH/gU3Wm8BBaus5SDCW9 qgvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=60xl7mC2mqeKL65zdGsBIIWEMSxp2vuKmudDQGN5FbE=; b=U+Im4+Wt2ETvooYdcuyn0SnOnqR+yo3dIZYLQL7PeF9JlAemItpnfW2vjq6fB/xZ8F 6YlQxaKabBAL3wfntfjhfktFkeHuVJVj9x7RgF9veUJYjDMxt6YhvDAdnUpN/qrXMhIS Edqh4h1RIUF7DoZEQIEo8XjL076c6VuZdlP+6dlClf9+g0pyfKisUl3pgJm6kAPi9diF znoN40i7/rTe22tPvRoo5LKtSQ8vZhO+PDi6IILLQmQCeHPkkwqMERLzbrPD1IkMLtE8 LL2NpSWLhAzYtEcK46LJ9pTB6G5G3wCKaXpdXE3bV1+qPiTenie+PyM2HfLeuZX9fyUa cvAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baikalelectronics.ru header.s=mail header.b=Gna3OMyU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id l8-20020a05687040c800b000df0dc4308dsi2578052oal.243.2022.03.28.15.26.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 15:26:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@baikalelectronics.ru header.s=mail header.b=Gna3OMyU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 33D1095A09; Mon, 28 Mar 2022 14:39:47 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233863AbiC1PLr (ORCPT + 99 others); Mon, 28 Mar 2022 11:11:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244270AbiC1PKw (ORCPT ); Mon, 28 Mar 2022 11:10:52 -0400 Received: from mail.baikalelectronics.ru (mail.baikalelectronics.com [87.245.175.226]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id C33305FF3D; Mon, 28 Mar 2022 08:09:11 -0700 (PDT) Received: from mail.baikalelectronics.ru (unknown [192.168.51.25]) by mail.baikalelectronics.ru (Postfix) with ESMTP id 8CF071D5AAB; Thu, 24 Mar 2022 04:25:29 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.baikalelectronics.ru 8CF071D5AAB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baikalelectronics.ru; s=mail; t=1648085129; bh=60xl7mC2mqeKL65zdGsBIIWEMSxp2vuKmudDQGN5FbE=; h=From:To:CC:Subject:Date:In-Reply-To:References:From; b=Gna3OMyUsLeCvKrGe2UV9VyKO7TgX2XrJ4e7XIXgJbmkJ17Erf1Zr4C6Uv+q9REP1 SdelwNHqt+DYCN8dZBeyE104DCKlQFiL3d6k7IYXPzGYSpWGevQyYB2qIZu32W27dU MrpT55UAuKt1ky9EH5wg9CShgeCKHMSmnTzzdIRw= Received: from localhost (192.168.168.10) by mail (192.168.51.25) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 24 Mar 2022 04:25:29 +0300 From: Serge Semin To: Jingoo Han , Gustavo Pimentel , Bjorn Helgaas , Lorenzo Pieralisi , Rob Herring , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Kishon Vijay Abraham I CC: Serge Semin , Serge Semin , Alexey Malahov , Pavel Parkhomenko , Frank Li , Manivannan Sadhasivam , , Subject: [PATCH 03/12] PCI: dwc: Add unroll iATU space support to the regions disable method Date: Thu, 24 Mar 2022 04:25:14 +0300 Message-ID: <20220324012524.16784-4-Sergey.Semin@baikalelectronics.ru> In-Reply-To: <20220324012524.16784-1-Sergey.Semin@baikalelectronics.ru> References: <20220324012524.16784-1-Sergey.Semin@baikalelectronics.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MAIL.baikal.int (192.168.51.25) To mail (192.168.51.25) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The dw_pcie_disable_atu() method was introduced in the commit f8aed6ec624f ("PCI: dwc: designware: Add EP mode support"). Since then it hasn't changed at all. For all that time the method has supported the viewport version of the iATU CSRs only. Basically it works for the DW PCIe IP-cores older than v4.80a since the newer controllers are equipped with the unrolled iATU/eDMA space. It means the methods using it like pci_epc_ops.clear_bar and pci_epc_ops.unmap_addr callbacks just don't work correctly for the DW PCIe controllers with unrolled iATU CSRs. The same concerns the dw_pcie_setup_rc() method, which disables the outbound iATU entries before re-initializing them. So in order to fix the problems denoted above let's convert the dw_pcie_disable_atu() method to disabling the iATU inbound and outbound regions in the unrolled iATU CSRs in case the DW PCIe controller has been synthesized with the ones support. The former semantics will be remained for the controller having iATU mapped over the viewport. Fixes: f8aed6ec624f ("PCI: dwc: designware: Add EP mode support") Signed-off-by: Serge Semin --- drivers/pci/controller/dwc/pcie-designware.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index d92c8a25094f..7dc8c360a0d4 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -504,8 +504,18 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, int index, return; } - dw_pcie_writel_dbi(pci, PCIE_ATU_VIEWPORT, region | index); - dw_pcie_writel_dbi(pci, PCIE_ATU_CR2, ~(u32)PCIE_ATU_ENABLE); + if (pci->iatu_unroll_enabled) { + if (region == PCIE_ATU_REGION_INBOUND) { + dw_pcie_writel_ib_unroll(pci, index, PCIE_ATU_UNR_REGION_CTRL2, + ~(u32)PCIE_ATU_ENABLE); + } else { + dw_pcie_writel_ob_unroll(pci, index, PCIE_ATU_UNR_REGION_CTRL2, + ~(u32)PCIE_ATU_ENABLE); + } + } else { + dw_pcie_writel_dbi(pci, PCIE_ATU_VIEWPORT, region | index); + dw_pcie_writel_dbi(pci, PCIE_ATU_CR2, ~(u32)PCIE_ATU_ENABLE); + } } int dw_pcie_wait_for_link(struct dw_pcie *pci) -- 2.35.1