From: Xiubo Li Date: Wed, 2 Apr 2014 02:20:17 +0000 (+0800) Subject: regmap: mmio: Fix the bug of 'offset' value parsing. X-Git-Tag: omap-for-v3.16/fixes-against-rc1~39^2~30^2~1^4 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=88cb32c657ed13dc29561d0f4aa154e0fd25759f;p=pandora-kernel.git regmap: mmio: Fix the bug of 'offset' value parsing. 'offset = *(u32 *)reg;' This will be okey for 32/64-bits register device, but for 8/16-bits register ones, the 'offset' value will overflow, for example: The IMX2 Watchdog, whose registers and values are all 16-bits: If the IO base virtual address is ctx->regs = 0x888c0000, and the now doing the 0x00 register accessing: Using 'offset = *(u32 *)reg' the offset value will possiblly be 0x77310000, Using 'offset = *(u16 *)reg' the offset value will be 0x0000. In the regmap_mmio_gather_write(), ctx->regs + 0x7731000 will be 0xffbd0000, but actually it should be ctx->regs + 0x0000 = 0x888c0000. Signed-off-by: Xiubo Li Signed-off-by: Mark Brown --- Reading git-diff-tree failed