@@ -102,19 +102,22 @@ enum gate_type {
102
102
* @source: the ID+1 of the parent clock element.
103
103
* Root clock uses ID of ~0 (PARENT_ID);
104
104
* @gate: clock enable/disable
105
- * @div_min: smallest permitted clock divider
106
- * @div_max: largest permitted clock divider
107
- * @reg: clock divider register offset, in 32-bit words
108
- * @div_table: optional list of fixed clock divider values;
105
+ * @div: substructure for clock divider
106
+ * @div.min: smallest permitted clock divider
107
+ * @div.max: largest permitted clock divider
108
+ * @div.reg: clock divider register offset, in 32-bit words
109
+ * @div.table: optional list of fixed clock divider values;
109
110
* must be in ascending order, zero for unused
110
- * @div: divisor for fixed-factor clock
111
- * @mul: multiplier for fixed-factor clock
112
- * @group: UART group, 0=UART0/1/2, 1=UART3/4/5/6/7
113
- * @sel: select either g1/r1 or g2/r2 as clock source
114
- * @g1: 1st source gate (clock enable/disable)
115
- * @r1: 1st source reset (module reset)
116
- * @g2: 2nd source gate (clock enable/disable)
117
- * @r2: 2nd source reset (module reset)
111
+ * @ffc: substructure for fixed-factor clocks
112
+ * @ffc.div: divisor for fixed-factor clock
113
+ * @ffc.mul: multiplier for fixed-factor clock
114
+ * @dual: substructure for dual clock gates
115
+ * @dual.group: UART group, 0=UART0/1/2, 1=UART3/4/5/6/7
116
+ * @dual.sel: select either g1/r1 or g2/r2 as clock source
117
+ * @dual.g1: 1st source gate (clock enable/disable)
118
+ * @dual.r1: 1st source reset (module reset)
119
+ * @dual.g2: 2nd source gate (clock enable/disable)
120
+ * @dual.r2: 2nd source reset (module reset)
118
121
*
119
122
* Describes a single element in the clock tree hierarchy.
120
123
* As there are quite a large number of clock elements, this
@@ -131,13 +134,13 @@ struct r9a06g032_clkdesc {
131
134
struct r9a06g032_gate gate ;
132
135
/* type = K_DIV */
133
136
struct {
134
- unsigned int div_min :10 , div_max :10 , reg :10 ;
135
- u16 div_table [4 ];
136
- };
137
+ unsigned int min :10 , max :10 , reg :10 ;
138
+ u16 table [4 ];
139
+ } div ;
137
140
/* type = K_FFC */
138
141
struct {
139
142
u16 div , mul ;
140
- };
143
+ } ffc ;
141
144
/* type = K_DUALGATE */
142
145
struct {
143
146
uint16_t group :1 ;
@@ -178,26 +181,26 @@ struct r9a06g032_clkdesc {
178
181
.type = K_FFC, \
179
182
.index = R9A06G032_##_idx, \
180
183
.name = _n, \
181
- .div = _div, \
182
- .mul = _mul \
184
+ .ffc. div = _div, \
185
+ .ffc. mul = _mul \
183
186
}
184
187
#define D_FFC (_idx , _n , _src , _div ) { \
185
188
.type = K_FFC, \
186
189
.index = R9A06G032_##_idx, \
187
190
.source = 1 + R9A06G032_##_src, \
188
191
.name = _n, \
189
- .div = _div, \
190
- .mul = 1 \
192
+ .ffc. div = _div, \
193
+ .ffc. mul = 1 \
191
194
}
192
195
#define D_DIV (_idx , _n , _src , _reg , _min , _max , ...) { \
193
196
.type = K_DIV, \
194
197
.index = R9A06G032_##_idx, \
195
198
.source = 1 + R9A06G032_##_src, \
196
199
.name = _n, \
197
- .reg = _reg, \
198
- .div_min = _min, \
199
- .div_max = _max, \
200
- .div_table = { __VA_ARGS__ } \
200
+ .div. reg = _reg, \
201
+ .div.min = _min, \
202
+ .div.max = _max, \
203
+ .div.table = { __VA_ARGS__ } \
201
204
}
202
205
#define D_UGATE (_idx , _n , _src , _g , _g1 , _r1 , _g2 , _r2 ) { \
203
206
.type = K_DUALGATE, \
@@ -1063,14 +1066,14 @@ r9a06g032_register_div(struct r9a06g032_priv *clocks,
1063
1066
1064
1067
div -> clocks = clocks ;
1065
1068
div -> index = desc -> index ;
1066
- div -> reg = desc -> reg ;
1069
+ div -> reg = desc -> div . reg ;
1067
1070
div -> hw .init = & init ;
1068
- div -> min = desc -> div_min ;
1069
- div -> max = desc -> div_max ;
1071
+ div -> min = desc -> div . min ;
1072
+ div -> max = desc -> div . max ;
1070
1073
/* populate (optional) divider table fixed values */
1071
1074
for (i = 0 ; i < ARRAY_SIZE (div -> table ) &&
1072
- i < ARRAY_SIZE (desc -> div_table ) && desc -> div_table [i ]; i ++ ) {
1073
- div -> table [div -> table_size ++ ] = desc -> div_table [i ];
1075
+ i < ARRAY_SIZE (desc -> div . table ) && desc -> div . table [i ]; i ++ ) {
1076
+ div -> table [div -> table_size ++ ] = desc -> div . table [i ];
1074
1077
}
1075
1078
1076
1079
clk = clk_register (NULL , & div -> hw );
@@ -1269,11 +1272,10 @@ static void r9a06g032_clocks_del_clk_provider(void *data)
1269
1272
1270
1273
static void __init r9a06g032_init_h2mode (struct r9a06g032_priv * clocks )
1271
1274
{
1272
- struct device_node * usbf_np = NULL ;
1275
+ struct device_node * usbf_np ;
1273
1276
u32 usb ;
1274
1277
1275
- while ((usbf_np = of_find_compatible_node (usbf_np , NULL ,
1276
- "renesas,rzn1-usbf" ))) {
1278
+ for_each_compatible_node (usbf_np , NULL , "renesas,rzn1-usbf" ) {
1277
1279
if (of_device_is_available (usbf_np ))
1278
1280
break ;
1279
1281
}
@@ -1333,7 +1335,8 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
1333
1335
case K_FFC :
1334
1336
clk = clk_register_fixed_factor (NULL , d -> name ,
1335
1337
parent_name , 0 ,
1336
- d -> mul , d -> div );
1338
+ d -> ffc .mul ,
1339
+ d -> ffc .div );
1337
1340
break ;
1338
1341
case K_GATE :
1339
1342
clk = r9a06g032_register_gate (clocks , parent_name , d );
0 commit comments