These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / clk / tegra / cvb.h
1 /*
2  * Utility functions for parsing Tegra CVB voltage tables
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11  * more details.
12  *
13  */
14
15 #ifndef __DRIVERS_CLK_TEGRA_CVB_H
16 #define __DRIVERS_CLK_TEGRA_CVB_H
17
18 #include <linux/types.h>
19
20 struct device;
21
22 #define MAX_DVFS_FREQS  40
23
24 struct rail_alignment {
25         int offset_uv;
26         int step_uv;
27 };
28
29 struct cvb_coefficients {
30         int c0;
31         int c1;
32         int c2;
33 };
34
35 struct cvb_table_freq_entry {
36         unsigned long freq;
37         struct cvb_coefficients coefficients;
38 };
39
40 struct cvb_cpu_dfll_data {
41         u32 tune0_low;
42         u32 tune0_high;
43         u32 tune1;
44 };
45
46 struct cvb_table {
47         int speedo_id;
48         int process_id;
49
50         int min_millivolts;
51         int max_millivolts;
52         struct rail_alignment alignment;
53
54         int speedo_scale;
55         int voltage_scale;
56         struct cvb_table_freq_entry cvb_table[MAX_DVFS_FREQS];
57         struct cvb_cpu_dfll_data cpu_dfll_data;
58 };
59
60 const struct cvb_table *tegra_cvb_build_opp_table(
61                 const struct cvb_table *cvb_tables,
62                 size_t sz, int process_id,
63                 int speedo_id, int speedo_value,
64                 unsigned long max_rate,
65                 struct device *opp_dev);
66
67 #endif