]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: keystone: Specify correct alignment requirement
authorNiklas Cassel <cassel@kernel.org>
Fri, 31 Jan 2025 18:29:55 +0000 (19:29 +0100)
committerKrzysztof Wilczyński <kwilczynski@kernel.org>
Sat, 8 Mar 2025 14:47:25 +0000 (14:47 +0000)
The support for a specific iATU alignment was added in
commit 2a9a801620ef ("PCI: endpoint: Add support to specify alignment for
buffers allocated to BARs").

This commit specifically mentions both that the alignment by each DWC
based EP driver should match CX_ATU_MIN_REGION_SIZE, and that AM65x
specifically has a 64 KB alignment.

This also matches the CX_ATU_MIN_REGION_SIZE value specified in the
section "12.2.2.4.7 PCIe Subsystem Address Translation" of the Technical
Reference Manual (TRM) for AM65x:

  https://www.ti.com/lit/ug/spruid7e/spruid7e.pdf

This higher value, 1 MB, was obviously an ugly hack used to be able to
handle Resizable BARs which have a minimum size of 1 MB.

Now when we actually have support for Resizable BARs, let's configure the
iATU alignment requirement to the actual requirement.
(BARs described as Resizable will still get aligned to 1 MB.)

Cc: stable+noautosel@kernel.org # Depends on PCI endpoint Resizable BARs series
Fixes: 23284ad677a9 ("PCI: keystone: Add support for PCIe EP in AM654x Platforms")
Signed-off-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20250131182949.465530-15-cassel@kernel.org
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
[kwilczynski: commit log]
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
drivers/pci/controller/dwc/pci-keystone.c

index fdc610ec7e5e89a97d46d5579800a0d4d072c0ba..76a37368ae4f922a042fbf465ea716e0329fd292 100644 (file)
@@ -970,7 +970,7 @@ static const struct pci_epc_features ks_pcie_am654_epc_features = {
        .bar[BAR_3] = { .type = BAR_FIXED, .fixed_size = SZ_64K, },
        .bar[BAR_4] = { .type = BAR_FIXED, .fixed_size = 256, },
        .bar[BAR_5] = { .type = BAR_RESIZABLE, },
-       .align = SZ_1M,
+       .align = SZ_64K,
 };
 
 static const struct pci_epc_features*