hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
 * Copyright (C) 2014-2015 Freescale Semiconductor, Inc.
 *
 * Author:
 *    Peng Fan <Peng.Fan@freescale.com>
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#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