| /* SPDX-License-Identifier: GPL-2.0+ */ | |
| /* | |
| * Copyright (C) 2014-2015 Freescale Semiconductor, Inc. | |
| * | |
| * Author: | |
| * Peng Fan <Peng.Fan@freescale.com> | |
| */ | |
| #ifndef _ASM_ARCH_CLOCK_SLICE_H | |
| #define _ASM_ARCH_CLOCK_SLICE_H | |
| enum root_pre_div { | |
| CLK_ROOT_PRE_DIV1 = 0, | |
| CLK_ROOT_PRE_DIV2, | |
| CLK_ROOT_PRE_DIV3, | |
| CLK_ROOT_PRE_DIV4, | |
| CLK_ROOT_PRE_DIV5, | |
| CLK_ROOT_PRE_DIV6, | |
| CLK_ROOT_PRE_DIV7, | |
| CLK_ROOT_PRE_DIV8, | |
| }; | |
| enum root_post_div { | |
| CLK_ROOT_POST_DIV1 = 0, | |
| CLK_ROOT_POST_DIV2, | |
| CLK_ROOT_POST_DIV3, | |
| CLK_ROOT_POST_DIV4, | |
| CLK_ROOT_POST_DIV5, | |
| CLK_ROOT_POST_DIV6, | |
| CLK_ROOT_POST_DIV7, | |
| CLK_ROOT_POST_DIV8, | |
| CLK_ROOT_POST_DIV9, | |
| CLK_ROOT_POST_DIV10, | |
| CLK_ROOT_POST_DIV11, | |
| CLK_ROOT_POST_DIV12, | |
| CLK_ROOT_POST_DIV13, | |
| CLK_ROOT_POST_DIV14, | |
| CLK_ROOT_POST_DIV15, | |
| CLK_ROOT_POST_DIV16, | |
| CLK_ROOT_POST_DIV17, | |
| CLK_ROOT_POST_DIV18, | |
| CLK_ROOT_POST_DIV19, | |
| CLK_ROOT_POST_DIV20, | |
| CLK_ROOT_POST_DIV21, | |
| CLK_ROOT_POST_DIV22, | |
| CLK_ROOT_POST_DIV23, | |
| CLK_ROOT_POST_DIV24, | |
| CLK_ROOT_POST_DIV25, | |
| CLK_ROOT_POST_DIV26, | |
| CLK_ROOT_POST_DIV27, | |
| CLK_ROOT_POST_DIV28, | |
| CLK_ROOT_POST_DIV29, | |
| CLK_ROOT_POST_DIV30, | |
| CLK_ROOT_POST_DIV31, | |
| CLK_ROOT_POST_DIV32, | |
| CLK_ROOT_POST_DIV33, | |
| CLK_ROOT_POST_DIV34, | |
| CLK_ROOT_POST_DIV35, | |
| CLK_ROOT_POST_DIV36, | |
| CLK_ROOT_POST_DIV37, | |
| CLK_ROOT_POST_DIV38, | |
| CLK_ROOT_POST_DIV39, | |
| CLK_ROOT_POST_DIV40, | |
| CLK_ROOT_POST_DIV41, | |
| CLK_ROOT_POST_DIV42, | |
| CLK_ROOT_POST_DIV43, | |
| CLK_ROOT_POST_DIV44, | |
| CLK_ROOT_POST_DIV45, | |
| CLK_ROOT_POST_DIV46, | |
| CLK_ROOT_POST_DIV47, | |
| CLK_ROOT_POST_DIV48, | |
| CLK_ROOT_POST_DIV49, | |
| CLK_ROOT_POST_DIV50, | |
| CLK_ROOT_POST_DIV51, | |
| CLK_ROOT_POST_DIV52, | |
| CLK_ROOT_POST_DIV53, | |
| CLK_ROOT_POST_DIV54, | |
| CLK_ROOT_POST_DIV55, | |
| CLK_ROOT_POST_DIV56, | |
| CLK_ROOT_POST_DIV57, | |
| CLK_ROOT_POST_DIV58, | |
| CLK_ROOT_POST_DIV59, | |
| CLK_ROOT_POST_DIV60, | |
| CLK_ROOT_POST_DIV61, | |
| CLK_ROOT_POST_DIV62, | |
| CLK_ROOT_POST_DIV63, | |
| CLK_ROOT_POST_DIV64, | |
| }; | |
| enum root_auto_div { | |
| CLK_ROOT_AUTO_DIV1 = 0, | |
| CLK_ROOT_AUTO_DIV2, | |
| CLK_ROOT_AUTO_DIV4, | |
| CLK_ROOT_AUTO_DIV8, | |
| CLK_ROOT_AUTO_DIV16, | |
| }; | |
| int clock_set_src(enum clk_root_index clock_id, enum clk_root_src clock_src); | |
| int clock_get_src(enum clk_root_index clock_id, enum clk_root_src *p_clock_src); | |
| int clock_set_prediv(enum clk_root_index clock_id, enum root_pre_div pre_div); | |
| int clock_get_prediv(enum clk_root_index clock_id, enum root_pre_div *pre_div); | |
| int clock_set_postdiv(enum clk_root_index clock_id, enum root_post_div div); | |
| int clock_get_postdiv(enum clk_root_index clock_id, enum root_post_div *div); | |
| int clock_set_autopostdiv(enum clk_root_index clock_id, enum root_auto_div div, | |
| int auto_en); | |
| int clock_get_autopostdiv(enum clk_root_index clock_id, enum root_auto_div *div, | |
| int *auto_en); | |
| int clock_get_target_val(enum clk_root_index clock_id, u32 *val); | |
| int clock_set_target_val(enum clk_root_index clock_id, u32 val); | |
| int clock_root_cfg(enum clk_root_index clock_id, enum root_pre_div pre_div, | |
| enum root_post_div post_div, enum clk_root_src clock_src); | |
| int clock_root_enabled(enum clk_root_index clock_id); | |
| int clock_enable(enum clk_ccgr_index index, bool enable); | |
| #endif |