PCI: mediatek-gen3: Fix translation window size calculation
authorJianjun Wang <jianjun.wang@mediatek.com>
Mon, 23 Oct 2023 08:14:23 +0000 (16:14 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 9 Jan 2024 22:42:22 +0000 (16:42 -0600)
commit9ccc1318cf4bd90601f221268e42c3374703d681
tree3a19b5821fe074da1dec1a83303a20db31f93f19
parent4e11c29873a8a296a20f99b3e03095e65ebf897d
PCI: mediatek-gen3: Fix translation window size calculation

When using the fls() helper, the translation table should be a power of
two; otherwise, the resulting value will not be correct.

For example, given fls(0x3e00000) - 1 = 25, the PCIe translation window
size will be set to 0x2000000 instead of the expected size 0x3e00000.

Fix the translation window by splitting the MMIO space into multiple tables
if its size is not a power of two.

[kwilczynski: commit log]
Link: https://lore.kernel.org/linux-pci/20231023081423.18559-1-jianjun.wang@mediatek.com
Fixes: d3bf75b579b9 ("PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192")
Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
Signed-off-by: Krzysztof WilczyƄski <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
drivers/pci/controller/pcie-mediatek-gen3.c