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 <linux/clk-provider.h> 10 11 #include "ccu_common.h" 12 13 struct ccu_phase { 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 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