@@ -19,9 +19,9 @@ struct sprd_gate {
19
19
struct sprd_clk_common common ;
20
20
};
21
21
22
- #define SPRD_SC_GATE_CLK_OPS_UDELAY (_struct , _name , _parent , _reg , \
22
+ #define SPRD_SC_GATE_CLK_HW_INIT_FN (_struct , _name , _parent , _reg , \
23
23
_sc_offset , _enable_mask , _flags , \
24
- _gate_flags , _udelay , _ops ) \
24
+ _gate_flags , _udelay , _ops , _fn ) \
25
25
struct sprd_gate _struct = { \
26
26
.enable_mask = _enable_mask, \
27
27
.sc_offset = _sc_offset, \
@@ -30,38 +30,121 @@ struct sprd_gate {
30
30
.common = { \
31
31
.regmap = NULL, \
32
32
.reg = _reg, \
33
- .hw.init = CLK_HW_INIT(_name, \
34
- _parent, \
35
- _ops, \
36
- _flags), \
33
+ .hw.init = _fn(_name, _parent, \
34
+ _ops, _flags), \
37
35
} \
38
36
}
39
37
38
+ #define SPRD_SC_GATE_CLK_OPS_UDELAY (_struct , _name , _parent , _reg , \
39
+ _sc_offset , _enable_mask , _flags , \
40
+ _gate_flags , _udelay , _ops ) \
41
+ SPRD_SC_GATE_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, \
42
+ _sc_offset, _enable_mask, _flags, \
43
+ _gate_flags, _udelay, _ops, CLK_HW_INIT)
44
+
40
45
#define SPRD_SC_GATE_CLK_OPS (_struct , _name , _parent , _reg , _sc_offset , \
41
46
_enable_mask , _flags , _gate_flags , _ops ) \
42
47
SPRD_SC_GATE_CLK_OPS_UDELAY(_struct, _name, _parent, _reg, \
43
48
_sc_offset, _enable_mask, _flags, \
44
49
_gate_flags, 0, _ops)
45
50
46
- #define SPRD_GATE_CLK (_struct , _name , _parent , _reg , \
47
- _enable_mask , _flags , _gate_flags ) \
48
- SPRD_SC_GATE_CLK_OPS(_struct, _name, _parent, _reg, 0, \
49
- _enable_mask, _flags, _gate_flags, \
50
- &sprd_gate_ops)
51
-
52
51
#define SPRD_SC_GATE_CLK (_struct , _name , _parent , _reg , _sc_offset , \
53
52
_enable_mask , _flags , _gate_flags ) \
54
53
SPRD_SC_GATE_CLK_OPS(_struct, _name, _parent, _reg, _sc_offset, \
55
54
_enable_mask, _flags, _gate_flags, \
56
55
&sprd_sc_gate_ops)
57
56
57
+ #define SPRD_GATE_CLK (_struct , _name , _parent , _reg , \
58
+ _enable_mask , _flags , _gate_flags ) \
59
+ SPRD_SC_GATE_CLK_OPS(_struct, _name, _parent, _reg, 0, \
60
+ _enable_mask, _flags, _gate_flags, \
61
+ &sprd_gate_ops)
62
+
58
63
#define SPRD_PLL_SC_GATE_CLK (_struct , _name , _parent , _reg , _sc_offset , \
59
- _enable_mask , _flags , _gate_flags , _udelay ) \
64
+ _enable_mask , _flags , _gate_flags , \
65
+ _udelay ) \
60
66
SPRD_SC_GATE_CLK_OPS_UDELAY(_struct, _name, _parent, _reg, \
61
67
_sc_offset, _enable_mask, _flags, \
62
68
_gate_flags, _udelay, \
63
69
&sprd_pll_sc_gate_ops)
64
70
71
+
72
+ #define SPRD_SC_GATE_CLK_HW_OPS_UDELAY (_struct , _name , _parent , _reg , \
73
+ _sc_offset , _enable_mask , \
74
+ _flags , _gate_flags , \
75
+ _udelay , _ops ) \
76
+ SPRD_SC_GATE_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, \
77
+ _sc_offset, _enable_mask, _flags, \
78
+ _gate_flags, _udelay, _ops, \
79
+ CLK_HW_INIT_HW)
80
+
81
+ #define SPRD_SC_GATE_CLK_HW_OPS (_struct , _name , _parent , _reg , \
82
+ _sc_offset , _enable_mask , _flags , \
83
+ _gate_flags , _ops ) \
84
+ SPRD_SC_GATE_CLK_HW_OPS_UDELAY(_struct, _name, _parent, _reg, \
85
+ _sc_offset, _enable_mask, \
86
+ _flags, _gate_flags, 0, _ops)
87
+
88
+ #define SPRD_SC_GATE_CLK_HW (_struct , _name , _parent , _reg , \
89
+ _sc_offset , _enable_mask , _flags , \
90
+ _gate_flags ) \
91
+ SPRD_SC_GATE_CLK_HW_OPS(_struct, _name, _parent, _reg, \
92
+ _sc_offset, _enable_mask, _flags, \
93
+ _gate_flags, &sprd_sc_gate_ops)
94
+
95
+ #define SPRD_GATE_CLK_HW (_struct , _name , _parent , _reg , \
96
+ _enable_mask , _flags , _gate_flags ) \
97
+ SPRD_SC_GATE_CLK_HW_OPS(_struct, _name, _parent, _reg, 0, \
98
+ _enable_mask, _flags, _gate_flags, \
99
+ &sprd_gate_ops)
100
+
101
+ #define SPRD_PLL_SC_GATE_CLK_HW (_struct , _name , _parent , _reg , \
102
+ _sc_offset , _enable_mask , _flags , \
103
+ _gate_flags , _udelay ) \
104
+ SPRD_SC_GATE_CLK_HW_OPS_UDELAY(_struct, _name, _parent, _reg, \
105
+ _sc_offset, _enable_mask, \
106
+ _flags, _gate_flags, _udelay, \
107
+ &sprd_pll_sc_gate_ops)
108
+
109
+ #define SPRD_SC_GATE_CLK_FW_NAME_OPS_UDELAY (_struct , _name , _parent , \
110
+ _reg , _sc_offset , \
111
+ _enable_mask , _flags , \
112
+ _gate_flags , _udelay , _ops ) \
113
+ SPRD_SC_GATE_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, \
114
+ _sc_offset, _enable_mask, _flags, \
115
+ _gate_flags, _udelay, _ops, \
116
+ CLK_HW_INIT_FW_NAME)
117
+
118
+ #define SPRD_SC_GATE_CLK_FW_NAME_OPS (_struct , _name , _parent , _reg , \
119
+ _sc_offset , _enable_mask , _flags , \
120
+ _gate_flags , _ops ) \
121
+ SPRD_SC_GATE_CLK_FW_NAME_OPS_UDELAY(_struct, _name, _parent, \
122
+ _reg, _sc_offset, \
123
+ _enable_mask, _flags, \
124
+ _gate_flags, 0, _ops)
125
+
126
+ #define SPRD_SC_GATE_CLK_FW_NAME (_struct , _name , _parent , _reg , \
127
+ _sc_offset , _enable_mask , _flags , \
128
+ _gate_flags ) \
129
+ SPRD_SC_GATE_CLK_FW_NAME_OPS(_struct, _name, _parent, _reg, \
130
+ _sc_offset, _enable_mask, _flags, \
131
+ _gate_flags, &sprd_sc_gate_ops)
132
+
133
+ #define SPRD_GATE_CLK_FW_NAME (_struct , _name , _parent , _reg , \
134
+ _enable_mask , _flags , _gate_flags ) \
135
+ SPRD_SC_GATE_CLK_FW_NAME_OPS(_struct, _name, _parent, _reg, 0, \
136
+ _enable_mask, _flags, _gate_flags, \
137
+ &sprd_gate_ops)
138
+
139
+ #define SPRD_PLL_SC_GATE_CLK_FW_NAME (_struct , _name , _parent , _reg , \
140
+ _sc_offset , _enable_mask , _flags , \
141
+ _gate_flags , _udelay ) \
142
+ SPRD_SC_GATE_CLK_FW_NAME_OPS_UDELAY(_struct, _name, _parent, \
143
+ _reg, _sc_offset, \
144
+ _enable_mask, _flags, \
145
+ _gate_flags, _udelay, \
146
+ &sprd_pll_sc_gate_ops)
147
+
65
148
static inline struct sprd_gate * hw_to_sprd_gate (const struct clk_hw * hw )
66
149
{
67
150
struct sprd_clk_common * common = hw_to_sprd_clk_common (hw );
0 commit comments