1*7bebc4b0SAdrian Alonso /* 2*7bebc4b0SAdrian Alonso * Copyright (C) 2014-2015 Freescale Semiconductor, Inc. 3*7bebc4b0SAdrian Alonso * 4*7bebc4b0SAdrian Alonso * Author: 5*7bebc4b0SAdrian Alonso * Peng Fan <Peng.Fan@freescale.com> 6*7bebc4b0SAdrian Alonso * 7*7bebc4b0SAdrian Alonso * SPDX-License-Identifier: GPL-2.0+ 8*7bebc4b0SAdrian Alonso */ 9*7bebc4b0SAdrian Alonso 10*7bebc4b0SAdrian Alonso #ifndef _ASM_ARCH_CLOCK_SLICE_H 11*7bebc4b0SAdrian Alonso #define _ASM_ARCH_CLOCK_SLICE_H 12*7bebc4b0SAdrian Alonso 13*7bebc4b0SAdrian Alonso enum root_pre_div { 14*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV1 = 0, 15*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV2, 16*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV3, 17*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV4, 18*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV5, 19*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV6, 20*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV7, 21*7bebc4b0SAdrian Alonso CLK_ROOT_PRE_DIV8, 22*7bebc4b0SAdrian Alonso }; 23*7bebc4b0SAdrian Alonso 24*7bebc4b0SAdrian Alonso enum root_post_div { 25*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV1 = 0, 26*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV2, 27*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV3, 28*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV4, 29*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV5, 30*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV6, 31*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV7, 32*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV8, 33*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV9, 34*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV10, 35*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV11, 36*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV12, 37*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV13, 38*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV14, 39*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV15, 40*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV16, 41*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV17, 42*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV18, 43*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV19, 44*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV20, 45*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV21, 46*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV22, 47*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV23, 48*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV24, 49*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV25, 50*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV26, 51*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV27, 52*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV28, 53*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV29, 54*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV30, 55*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV31, 56*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV32, 57*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV33, 58*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV34, 59*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV35, 60*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV36, 61*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV37, 62*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV38, 63*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV39, 64*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV40, 65*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV41, 66*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV42, 67*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV43, 68*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV44, 69*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV45, 70*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV46, 71*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV47, 72*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV48, 73*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV49, 74*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV50, 75*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV51, 76*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV52, 77*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV53, 78*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV54, 79*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV55, 80*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV56, 81*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV57, 82*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV58, 83*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV59, 84*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV60, 85*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV61, 86*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV62, 87*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV63, 88*7bebc4b0SAdrian Alonso CLK_ROOT_POST_DIV64, 89*7bebc4b0SAdrian Alonso }; 90*7bebc4b0SAdrian Alonso 91*7bebc4b0SAdrian Alonso enum root_auto_div { 92*7bebc4b0SAdrian Alonso CLK_ROOT_AUTO_DIV1 = 0, 93*7bebc4b0SAdrian Alonso CLK_ROOT_AUTO_DIV2, 94*7bebc4b0SAdrian Alonso CLK_ROOT_AUTO_DIV4, 95*7bebc4b0SAdrian Alonso CLK_ROOT_AUTO_DIV8, 96*7bebc4b0SAdrian Alonso CLK_ROOT_AUTO_DIV16, 97*7bebc4b0SAdrian Alonso }; 98*7bebc4b0SAdrian Alonso 99*7bebc4b0SAdrian Alonso int clock_set_src(enum clk_root_index clock_id, enum clk_root_src clock_src); 100*7bebc4b0SAdrian Alonso int clock_get_src(enum clk_root_index clock_id, enum clk_root_src *p_clock_src); 101*7bebc4b0SAdrian Alonso int clock_set_prediv(enum clk_root_index clock_id, enum root_pre_div pre_div); 102*7bebc4b0SAdrian Alonso int clock_get_prediv(enum clk_root_index clock_id, enum root_pre_div *pre_div); 103*7bebc4b0SAdrian Alonso int clock_set_postdiv(enum clk_root_index clock_id, enum root_post_div div); 104*7bebc4b0SAdrian Alonso int clock_get_postdiv(enum clk_root_index clock_id, enum root_post_div *div); 105*7bebc4b0SAdrian Alonso int clock_set_autopostdiv(enum clk_root_index clock_id, enum root_auto_div div, 106*7bebc4b0SAdrian Alonso int auto_en); 107*7bebc4b0SAdrian Alonso int clock_get_autopostdiv(enum clk_root_index clock_id, enum root_auto_div *div, 108*7bebc4b0SAdrian Alonso int *auto_en); 109*7bebc4b0SAdrian Alonso int clock_get_target_val(enum clk_root_index clock_id, u32 *val); 110*7bebc4b0SAdrian Alonso int clock_set_target_val(enum clk_root_index clock_id, u32 val); 111*7bebc4b0SAdrian Alonso int clock_root_cfg(enum clk_root_index clock_id, enum root_pre_div pre_div, 112*7bebc4b0SAdrian Alonso enum root_post_div post_div, enum clk_root_src clock_src); 113*7bebc4b0SAdrian Alonso int clock_root_enabled(enum clk_root_index clock_id); 114*7bebc4b0SAdrian Alonso 115*7bebc4b0SAdrian Alonso int clock_enable(enum clk_ccgr_index index, bool enable); 116*7bebc4b0SAdrian Alonso #endif 117