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
|
/*
* arch/arm/mach-tegra/la_priv_common.h
*
* Copyright (C) 2012 NVIDIA Corporation.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef _MACH_TEGRA_LA_PRIV_H_
#define _MACH_TEGRA_LA_PRIV_H_
/* maximum valid value for latency allowance */
#define MC_LA_MAX_VALUE 255
#define MC_RA(r) \
((u32)IO_ADDRESS(TEGRA_MC_BASE) + (MC_##r))
#define RA(r) \
((u32)IO_ADDRESS(TEGRA_MC_BASE) + (MC_LA_##r))
#define MASK(x) \
((0xFFFFFFFFUL >> (31 - (1 ? x) + (0 ? x))) << (0 ? x))
#define SHIFT(x) \
(0 ? x)
#define ID(id) \
TEGRA_LA_##id
#define LA_INFO(f, e, a, r, id, ss) \
{f, e, RA(a), MASK(r), SHIFT(r), ID(id), __stringify(id), ss}
struct la_client_info {
unsigned int fifo_size_in_atoms;
unsigned int expiration_in_ns; /* worst case expiration value */
unsigned long reg_addr;
unsigned long mask;
unsigned long shift;
enum tegra_la_id id;
char *name;
bool scaling_supported;
};
struct la_scaling_info {
unsigned int threshold_low;
unsigned int threshold_mid;
unsigned int threshold_high;
int scaling_ref_count;
int actual_la_to_set;
int la_set;
};
struct la_scaling_reg_info {
enum tegra_la_id id;
unsigned int tl_reg_addr;
unsigned int tl_mask;
unsigned int tl_shift;
unsigned int tm_reg_addr;
unsigned int tm_mask;
unsigned int tm_shift;
unsigned int th_reg_addr;
unsigned int th_mask;
unsigned int th_shift;
};
#endif /* _MACH_TEGRA_LA_PRIV_H_ */
|