[PATCH] clk: mvebu: armada-37xx-periph: fix __iomem casts in structure init
Ben Dooks
ben.dooks at codethink.co.uk
Tue Mar 10 05:36:25 PDT 2026
There are a number of casts to "void __iomem *" in the initialsation
of the driver's clk information. Fix this by adding a helper macro
for the cast.
Silences a number of sparse warnings:
drivers/clk/mvebu/armada-37xx-periph.c:254:1: warning: incorrect type in initializer (different address spaces)
drivers/clk/mvebu/armada-37xx-periph.c:254:1: expected void [noderef] __iomem *reg
drivers/clk/mvebu/armada-37xx-periph.c:254:1: got void *
drivers/clk/mvebu/armada-37xx-periph.c:254:1: warning: incorrect type in initializer (different address spaces)
drivers/clk/mvebu/armada-37xx-periph.c:254:1: expected void [noderef] __iomem *reg1
drivers/clk/mvebu/armada-37xx-periph.c:254:1: got void *
drivers/clk/mvebu/armada-37xx-periph.c:254:1: warning: incorrect type in initializer (different address spaces)
drivers/clk/mvebu/armada-37xx-periph.c:254:1: expected void [noderef] __iomem *reg2
drivers/clk/mvebu/armada-37xx-periph.c:254:1: got void *
drivers/clk/mvebu/armada-37xx-periph.c:255:1: warning: incorrect type in initializer (different address spaces)
drivers/clk/mvebu/armada-37xx-periph.c:255:1: expected void [noderef] __iomem *reg
drivers/clk/mvebu/armada-37xx-periph.c:255:1: got void *
...
Signed-off-by: Ben Dooks <ben.dooks at codethink.co.uk>
---
drivers/clk/mvebu/armada-37xx-periph.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/drivers/clk/mvebu/armada-37xx-periph.c b/drivers/clk/mvebu/armada-37xx-periph.c
index bd0bc8e7b1e7..3123771b9c99 100644
--- a/drivers/clk/mvebu/armada-37xx-periph.c
+++ b/drivers/clk/mvebu/armada-37xx-periph.c
@@ -126,9 +126,11 @@ static const struct clk_div_table clk_table2[] = {
static const struct clk_ops clk_double_div_ops;
static const struct clk_ops clk_pm_cpu_ops;
+#define __reg(__x) ((void __iomem __force *)(__x))
+
#define PERIPH_GATE(_name, _bit) \
struct clk_gate gate_##_name = { \
- .reg = (void *)CLK_DIS, \
+ .reg = __reg(CLK_DIS), \
.bit_idx = _bit, \
.hw.init = &(struct clk_init_data){ \
.ops = &clk_gate_ops, \
@@ -137,7 +139,7 @@ struct clk_gate gate_##_name = { \
#define PERIPH_MUX(_name, _shift) \
struct clk_mux mux_##_name = { \
- .reg = (void *)TBG_SEL, \
+ .reg = __reg(TBG_SEL), \
.shift = _shift, \
.mask = 3, \
.hw.init = &(struct clk_init_data){ \
@@ -147,8 +149,8 @@ struct clk_mux mux_##_name = { \
#define PERIPH_DOUBLEDIV(_name, _reg1, _reg2, _shift1, _shift2) \
struct clk_double_div rate_##_name = { \
- .reg1 = (void *)_reg1, \
- .reg2 = (void *)_reg2, \
+ .reg1 = __reg(_reg1), \
+ .reg2 = __reg(_reg2), \
.shift1 = _shift1, \
.shift2 = _shift2, \
.hw.init = &(struct clk_init_data){ \
@@ -158,7 +160,7 @@ struct clk_double_div rate_##_name = { \
#define PERIPH_DIV(_name, _reg, _shift, _table) \
struct clk_divider rate_##_name = { \
- .reg = (void *)_reg, \
+ .reg = __reg(_reg), \
.table = _table, \
.shift = _shift, \
.hw.init = &(struct clk_init_data){ \
@@ -168,10 +170,10 @@ struct clk_divider rate_##_name = { \
#define PERIPH_PM_CPU(_name, _shift1, _reg, _shift2) \
struct clk_pm_cpu muxrate_##_name = { \
- .reg_mux = (void *)TBG_SEL, \
+ .reg_mux = __reg(TBG_SEL), \
.mask_mux = 3, \
.shift_mux = _shift1, \
- .reg_div = (void *)_reg, \
+ .reg_div = __reg(_reg), \
.shift_div = _shift2, \
.hw.init = &(struct clk_init_data){ \
.ops = &clk_pm_cpu_ops, \
--
2.37.2.352.g3c44437643
More information about the linux-arm-kernel
mailing list