]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - drivers/clk/tegra/cvb.h
timers: Fix usleep_range() in the context of wake_up_process()
[mirror_ubuntu-bionic-kernel.git] / drivers / clk / tegra / cvb.h
CommitLineData
fa63aa3d
TT
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
20struct device;
21
22#define MAX_DVFS_FREQS 40
23
24struct rail_alignment {
25 int offset_uv;
26 int step_uv;
27};
28
29struct cvb_coefficients {
30 int c0;
31 int c1;
32 int c2;
33};
34
35struct cvb_table_freq_entry {
36 unsigned long freq;
37 struct cvb_coefficients coefficients;
38};
39
40struct cvb_cpu_dfll_data {
41 u32 tune0_low;
42 u32 tune0_high;
43 u32 tune1;
44};
45
46struct 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;
e8f6a68c 56 struct cvb_table_freq_entry entries[MAX_DVFS_FREQS];
fa63aa3d
TT
57 struct cvb_cpu_dfll_data cpu_dfll_data;
58};
59
e8f6a68c
TR
60const struct cvb_table *
61tegra_cvb_add_opp_table(struct device *dev, const struct cvb_table *cvb_tables,
62 size_t count, int process_id, int speedo_id,
63 int speedo_value, unsigned long max_freq);
f7c42d98
TR
64void tegra_cvb_remove_opp_table(struct device *dev,
65 const struct cvb_table *table,
66 unsigned long max_freq);
fa63aa3d
TT
67
68#endif