summaryrefslogtreecommitdiffstats
path: root/drivers/bus
diff options
context:
space:
mode:
authorSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>2014-07-30 10:39:33 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-07-31 07:26:34 +0200
commit722e90e32a318d71c4f8259ec98ae16c1bd8192f (patch)
treee222cbfa4b02e37e6485a3ba6909981ca7e17424 /drivers/bus
parent0992c07b4952f035da042478d60aaf51b15ae56f (diff)
downloadbarebox-722e90e32a318d71c4f8259ec98ae16c1bd8192f.tar.gz
barebox-722e90e32a318d71c4f8259ec98ae16c1bd8192f.tar.xz
bus: mvebu: fix resource size handling
A resource_size is defined as res->end - res->start + 1. Marvell MBUS driver gets some ranges from DT as start and size but mis-calculates end of range. This fixes 4 occurences of those mistakes. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/bus')
-rw-r--r--drivers/bus/mvebu-mbus.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
index 2fefa63edd..b1e407a7f2 100644
--- a/drivers/bus/mvebu-mbus.c
+++ b/drivers/bus/mvebu-mbus.c
@@ -188,7 +188,7 @@ static int mvebu_mbus_window_conflicts(struct mvebu_mbus_state *mbus,
phys_addr_t base, size_t size,
u8 target, u8 attr)
{
- u64 end = (u64)base + size;
+ u64 end = (u64)base + size - 1;
int win;
for (win = 0; win < mbus->soc->num_wins; win++) {
@@ -204,7 +204,7 @@ static int mvebu_mbus_window_conflicts(struct mvebu_mbus_state *mbus,
if (!enabled)
continue;
- wend = wbase + wsize;
+ wend = wbase + wsize - 1;
/*
* Check if the current window overlaps with the
@@ -662,7 +662,7 @@ static void mvebu_mbus_get_pcie_resources(struct device_node *np,
reg, ARRAY_SIZE(reg));
if (!ret) {
mem->start = reg[0];
- mem->end = mem->start + reg[1];
+ mem->end = mem->start + reg[1] - 1;
mem->flags = IORESOURCE_MEM;
}
@@ -670,7 +670,7 @@ static void mvebu_mbus_get_pcie_resources(struct device_node *np,
reg, ARRAY_SIZE(reg));
if (!ret) {
io->start = reg[0];
- io->end = io->start + reg[1];
+ io->end = io->start + reg[1] - 1;
io->flags = IORESOURCE_IO;
}
}