/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2024 SpacemiT Technology Co. Ltd * Copyright (c) 2024-2025 Haylen Chu */ #ifndef _CCU_COMMON_H_ #define _CCU_COMMON_H_ #include struct ccu_common { struct regmap *regmap; struct regmap *lock_regmap; union { /* For DDN and MIX */ struct { u32 reg_ctrl; u32 reg_fc; u32 mask_fc; }; /* For PLL */ struct { u32 reg_swcr1; u32 reg_swcr3; }; }; struct clk_hw hw; }; static inline struct ccu_common *hw_to_ccu_common(struct clk_hw *hw) { return container_of(hw, struct ccu_common, hw); } #define ccu_read(c, reg) \ ({ \ u32 tmp; \ regmap_read((c)->regmap, (c)->reg_##reg, &tmp); \ tmp; \ }) #define ccu_update(c, reg, mask, val) \ regmap_update_bits((c)->regmap, (c)->reg_##reg, mask, val) #endif /* _CCU_COMMON_H_ */