mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 23:47:04 +07:00
88cb32c657
'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 <Li.Xiubo@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org> |
||
---|---|---|
.. | ||
internal.h | ||
Kconfig | ||
Makefile | ||
regcache-flat.c | ||
regcache-lzo.c | ||
regcache-rbtree.c | ||
regcache.c | ||
regmap-debugfs.c | ||
regmap-i2c.c | ||
regmap-irq.c | ||
regmap-mmio.c | ||
regmap-spi.c | ||
regmap-spmi.c | ||
regmap.c |