1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2016 Maxime Ripard. All rights reserved.
4  */
5 
6 #ifndef _CCU_PHASE_H_
7 #define _CCU_PHASE_H_
8 
9 #include "ccu.h"
10 #include "ccu_common.h"
11 
12 struct ccu_phase
13 {
14     u8          shift;
15     u8          width;
16 
17     struct ccu_common   common;
18 };
19 
20 #define SUNXI_CCU_PHASE(_struct, _name, _parent, _reg, _shift, _width, _flags) \
21     struct ccu_phase _struct = {                    \
22         .shift  = _shift,                   \
23                   .width  = _width,                   \
24                             .common = {                     \
25                                                             .reg        = _reg,             \
26                                                             .hw.init    = CLK_HW_INIT(_name,        \
27                                                                     _parent,      \
28                                                                     &ccu_phase_ops,   \
29                                                                     _flags),      \
30                                       }                           \
31     }
32 
hw_to_ccu_phase(struct clk_hw * hw)33 static inline struct ccu_phase *hw_to_ccu_phase(struct clk_hw *hw)
34 {
35     struct ccu_common *common = hw_to_ccu_common(hw);
36 
37     return container_of(common, struct ccu_phase, common);
38 }
39 
40 extern const struct clk_ops ccu_phase_ops;
41 
42 #endif /* _CCU_PHASE_H_ */
43