9a084d8cba0212de587dbf254e2819d485b732f0
[linux-2.6.git] / arch / arm / mach-tegra / fuse.h
1 /*
2  * arch/arm/mach-tegra/fuse.h
3  *
4  * Copyright (C) 2010 Google, Inc.
5  * Copyright (C) 2010-2011 NVIDIA Corp.
6  *
7  * Author:
8  *      Colin Cross <ccross@android.com>
9  *
10  * This software is licensed under the terms of the GNU General Public
11  * License version 2, as published by the Free Software Foundation, and
12  * may be copied, distributed, and modified under those terms.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  */
20
21 #ifndef __MACH_TEGRA_FUSE_H
22 #define __MACH_TEGRA_FUSE_H
23
24 #define SKU_ID_T20      8
25 #define SKU_ID_T25SE    20
26 #define SKU_ID_AP25     23
27 #define SKU_ID_T25      24
28 #define SKU_ID_AP25E    27
29 #define SKU_ID_T25E     28
30
31 #define TEGRA20         0x20
32 #define TEGRA30         0x30
33 #define TEGRA11X        0x35
34
35 #define INVALID_PROCESS_ID      99 /* don't expect to have 100 process id's */
36
37 extern int tegra_sku_id;
38 extern int tegra_chip_id;
39
40 extern int tegra_bct_strapping;
41
42 unsigned long long tegra_chip_uid(void);
43 unsigned int tegra_spare_fuse(int bit);
44 void tegra_init_fuse(void);
45 const char *tegra_get_revision_name(void);
46
47 #ifdef CONFIG_TEGRA_SILICON_PLATFORM
48
49 int tegra_soc_speedo_id(void);
50 void tegra_init_speedo_data(void);
51 int tegra_cpu_process_id(void);
52 int tegra_core_process_id(void);
53 int tegra_get_age(void);
54
55 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
56 int tegra_package_id(void);
57 int tegra_cpu_speedo_id(void);
58 int tegra_cpu_speedo_mv(void);
59 int tegra_core_speedo_mv(void);
60 int tegra_get_sku_override(void);
61 int tegra_fuse_get_cpu_iddq_mA(u32 *iddq);
62 #else
63 static inline int tegra_package_id(void) { return -1; }
64 static inline int tegra_cpu_speedo_id(void) { return 0; }
65 static inline int tegra_cpu_speedo_mv(void) { return 1000; }
66 static inline int tegra_core_speedo_mv(void) { return 1200; }
67 static inline int tegra_fuse_get_cpu_iddq_mA(u32 *iddq) { return 0; }
68 #endif /* CONFIG_ARCH_TEGRA_2x_SOC */
69
70 #else
71
72 static inline int tegra_cpu_process_id(void) { return 0; }
73 static inline int tegra_core_process_id(void) { return 0; }
74 static inline int tegra_cpu_speedo_id(void) { return 0; }
75 static inline int tegra_soc_speedo_id(void) { return 0; }
76 static inline int tegra_package_id(void) { return -1; }
77 static inline int tegra_cpu_speedo_mv(void) { return 1250; }
78 static inline int tegra_core_speedo_mv(void) { return 1200; }
79 static inline void tegra_init_speedo_data(void) { }
80
81 #endif /* CONFIG_TEGRA_SILICON_PLATFORM */
82
83 u32 tegra_fuse_readl(unsigned long offset);
84 void tegra_fuse_writel(u32 val, unsigned long offset);
85
86 #endif /* MACH_TEGRA_FUSE_H */