linux/drivers/bus
Jan Luebbe 2bbbd96357 bus: mbus: fix window size calculation for 4GB windows
At least the Armada XP SoC supports 4GB on a single DRAM window. Because
the size register values contain the actual size - 1, the MSB is set in
that case. For example, the SDRAM window's control register's value is
0xffffffe1 for 4GB (bits 31 to 24 contain the size).

The MBUS driver reads back each window's size from registers and
calculates the actual size as (control_reg | ~DDR_SIZE_MASK) + 1, which
overflows for 32 bit values, resulting in other miscalculations further
on (a bad RAM window for the CESA crypto engine calculated by
mvebu_mbus_setup_cpu_target_nooverlap() in my case).

This patch changes the type in 'struct mbus_dram_window' from u32 to
u64, which allows us to keep using the same register calculation code in
most MBUS-using drivers (which calculate ->size - 1 again).

Fixes: fddddb52a6 ("bus: introduce an Marvell EBU MBus driver")
CC: stable@vger.kernel.org
Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
2017-10-12 15:01:30 +02:00
..
Kconfig bus: sunxi-rsb: Enable by default for ARM64 2017-08-18 14:30:15 +08:00
Makefile bus: Add Tegra GMI support 2016-11-18 18:32:57 -08:00
arm-cci.c bus: Convert to using %pOF instead of full_name 2017-08-16 17:21:40 +02:00
arm-ccn.c bus: arm-ccn: Enable stats for CCN-502 interconnect 2017-06-23 15:46:38 +01:00
brcmstb_gisb.c bus: brcmstb_gisb: update to support new revision 2017-05-13 20:18:57 -07:00
da8xx-mstpri.c bus: da850-mstpri: fix my e-mail address 2017-01-02 15:52:32 +05:30
imx-weim.c bus: Convert to using %pOF instead of full_name 2017-08-16 17:21:40 +02:00
mips_cdmm.c MIPS/BUS/CDMM: Convert to hotplug state machine 2016-09-06 18:30:25 +02:00
mvebu-mbus.c bus: mbus: fix window size calculation for 4GB windows 2017-10-12 15:01:30 +02:00
omap-ocp2scp.c bus: omap-ocp2scp: Fix error handling in omap_ocp2scp_probe 2017-07-12 02:25:41 -07:00
omap_l3_noc.c Merge branches 'pm-sleep' and 'pm-runtime' 2015-06-19 01:18:02 +02:00
omap_l3_noc.h bus: omap_l3_noc: Fix master id address decoding for OMAP5 2015-05-04 10:21:01 -07:00
omap_l3_smx.c genirq: Remove the deprecated 'IRQF_DISABLED' request_irq() flag entirely 2015-03-05 20:53:06 +01:00
omap_l3_smx.h
qcom-ebi2.c bus: qcom: add EBI2 driver 2016-09-08 15:27:05 +02:00
simple-pm-bus.c drivers: bus: Add Simple Power-Managed Bus Driver 2015-02-24 06:36:18 +09:00
sunxi-rsb.c bus: Convert to using %pOF instead of full_name 2017-08-16 17:21:40 +02:00
tegra-aconnect.c bus: tegra-aconnect: Use of_pm_clk_add_clk() 2016-08-16 12:22:51 +02:00
tegra-gmi.c bus: Add support for Tegra Generic Memory Interface 2016-11-15 17:27:53 +01:00
uniphier-system-bus.c bus: uniphier-system-bus: set up registers when resuming 2017-08-04 12:57:18 +02:00
vexpress-config.c bus: vexpress-config: fix device reference leak 2016-11-30 23:29:37 +01:00