Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jens Kuske and committed by
Maxime Ripard
febe6569 2d3e8f70

+3 -2
+3 -2
drivers/soc/sunxi/sunxi_sram.c
··· 117 117 118 118 val = readl(base + sram_data->reg); 119 119 val >>= sram_data->offset; 120 - val &= sram_data->width; 120 + val &= GENMASK(sram_data->width - 1, 0); 121 121 122 122 for (func = sram_data->func; func->func; func++) { 123 123 seq_printf(s, "\t\t%s%c\n", func->func, ··· 208 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 213 val = readl(base + sram_data->reg); 213 214 val &= ~mask; 214 215 writel(val | ((device << sram_data->offset) & mask),