Quellcode durchsuchen

[ARM] Orion: fix PCIe inbound window programming when RAM size is not a power of two

The PCIe inbound window size is supposed to be a power of two.  If
the total amount of RAM installed in the system is not a power of two,
round it up such that it is.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Lennert Buytenhek vor 15 Jahren
Ursprung
Commit
7788cd5557
1 geänderte Dateien mit 6 neuen und 0 gelöschten Zeilen
  1. 6 0
      arch/arm/plat-orion/pcie.c

+ 6 - 0
arch/arm/plat-orion/pcie.c

@@ -132,6 +132,12 @@ static void __init orion_pcie_setup_wins(void __iomem *base,
 		size += cs->size;
 	}
 
+	/*
+	 * Round up 'size' to the nearest power of two.
+	 */
+	if ((size & (size - 1)) != 0)
+		size = 1 << fls(size);
+
 	/*
 	 * Setup BAR[1] to all DRAM banks.
 	 */