aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Kuske <jenskuske@gmail.com>2016-01-27 08:51:13 -0500
committerMaxime Ripard <maxime.ripard@free-electrons.com>2016-01-27 14:29:20 -0500
commitfebe6569fae4b5e663f0a31d9dbf054d3b588ff5 (patch)
tree3f150a24986bb67877d36c6bb5a22b4a1037470d
parent2d3e8f70317cc6df93465e51f451d41bad32e010 (diff)
drivers: soc: sunxi: Fix mask generation for SRAM mapping
GENMASK is inclusive on both ends, therefor one has to be subtracted from the width. Also fixes the mask for debug output. Signed-off-by: Jens Kuske <jenskuske@gmail.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
-rw-r--r--drivers/soc/sunxi/sunxi_sram.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c
index bc52670c8f4b..99e354c8f53f 100644
--- a/drivers/soc/sunxi/sunxi_sram.c
+++ b/drivers/soc/sunxi/sunxi_sram.c
@@ -117,7 +117,7 @@ static int sunxi_sram_show(struct seq_file *s, void *data)
117 117
118 val = readl(base + sram_data->reg); 118 val = readl(base + sram_data->reg);
119 val >>= sram_data->offset; 119 val >>= sram_data->offset;
120 val &= sram_data->width; 120 val &= GENMASK(sram_data->width - 1, 0);
121 121
122 for (func = sram_data->func; func->func; func++) { 122 for (func = sram_data->func; func->func; func++) {
123 seq_printf(s, "\t\t%s%c\n", func->func, 123 seq_printf(s, "\t\t%s%c\n", func->func,
@@ -208,7 +208,8 @@ int sunxi_sram_claim(struct device *dev)
208 return -EBUSY; 208 return -EBUSY;
209 } 209 }
210 210
211 mask = GENMASK(sram_data->offset + sram_data->width, sram_data->offset); 211 mask = GENMASK(sram_data->offset + sram_data->width - 1,
212 sram_data->offset);
212 val = readl(base + sram_data->reg); 213 val = readl(base + sram_data->reg);
213 val &= ~mask; 214 val &= ~mask;
214 writel(val | ((device << sram_data->offset) & mask), 215 writel(val | ((device << sram_data->offset) & mask),