@@ -284,6 +284,29 @@ static u32 zynqmp_clk_get_max_divisor(u32 clk_id, u32 type)
284
284
return ret_payload [1 ];
285
285
}
286
286
287
+ static inline unsigned long zynqmp_clk_map_divider_ccf_flags (
288
+ const u32 zynqmp_type_flag )
289
+ {
290
+ unsigned long ccf_flag = 0 ;
291
+
292
+ if (zynqmp_type_flag & ZYNQMP_CLK_DIVIDER_ONE_BASED )
293
+ ccf_flag |= CLK_DIVIDER_ONE_BASED ;
294
+ if (zynqmp_type_flag & ZYNQMP_CLK_DIVIDER_POWER_OF_TWO )
295
+ ccf_flag |= CLK_DIVIDER_POWER_OF_TWO ;
296
+ if (zynqmp_type_flag & ZYNQMP_CLK_DIVIDER_ALLOW_ZERO )
297
+ ccf_flag |= CLK_DIVIDER_ALLOW_ZERO ;
298
+ if (zynqmp_type_flag & ZYNQMP_CLK_DIVIDER_POWER_OF_TWO )
299
+ ccf_flag |= CLK_DIVIDER_HIWORD_MASK ;
300
+ if (zynqmp_type_flag & ZYNQMP_CLK_DIVIDER_ROUND_CLOSEST )
301
+ ccf_flag |= CLK_DIVIDER_ROUND_CLOSEST ;
302
+ if (zynqmp_type_flag & ZYNQMP_CLK_DIVIDER_READ_ONLY )
303
+ ccf_flag |= CLK_DIVIDER_READ_ONLY ;
304
+ if (zynqmp_type_flag & ZYNQMP_CLK_DIVIDER_MAX_AT_ZERO )
305
+ ccf_flag |= CLK_DIVIDER_MAX_AT_ZERO ;
306
+
307
+ return ccf_flag ;
308
+ }
309
+
287
310
/**
288
311
* zynqmp_clk_register_divider() - Register a divider clock
289
312
* @name: Name of this clock
@@ -321,7 +344,7 @@ struct clk_hw *zynqmp_clk_register_divider(const char *name,
321
344
/* struct clk_divider assignments */
322
345
div -> is_frac = !!((nodes -> flag & CLK_FRAC ) |
323
346
(nodes -> custom_type_flag & CUSTOM_FLAG_CLK_FRAC ));
324
- div -> flags = nodes -> type_flag ;
347
+ div -> flags = zynqmp_clk_map_divider_ccf_flags ( nodes -> type_flag ) ;
325
348
div -> hw .init = & init ;
326
349
div -> clk_id = clk_id ;
327
350
div -> div_type = nodes -> type ;
0 commit comments