ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / include / mach / tegra_bb.h
1 /*
2  * arch/arm/mach-tegra/include/mach/tegra_bb.h
3  *
4  * Copyright (C) 2012-2013 NVIDIA Corporation. All rights reserved.
5  *
6  *
7  * This software is licensed under the terms of the GNU General Public
8  * License version 2, as published by the Free Software Foundation, and
9  * may be copied, distributed, and modified under those terms.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  */
17
18 #ifndef __MACH_TEGRA_BB_H
19 #define __MACH_TEGRA_BB_H
20
21 #define EMC_DSR         (1 << 0)
22
23 struct tegra_bb_platform_data {
24         /* Baseband->AP IRQ */
25         unsigned int bb_irq;
26         unsigned int mem_req_soon;
27 };
28
29 /*
30  * tegra_bb_register_ipc: register callback for IPC notification
31  * @param struct tegra_bb device pointer
32  * @param void (*cb)(voif *data) callback function
33  * @param void * callback data
34  * @return none
35  */
36 void tegra_bb_register_ipc(struct platform_device *dev,
37                            void (*cb)(void *data), void *cb_data);
38 /*
39  * tegra_bb_generate_ipc: generate IPC
40  * @param struct tegra_bb device pointer
41  * @return none
42  */
43 void tegra_bb_generate_ipc(struct platform_device *dev);
44
45 /*
46  * tegra_bb_abort_ipc: Clear AP2BB irq
47  * @param struct tegra_bb device pointer
48  * @return none
49  */
50 void tegra_bb_abort_ipc(struct platform_device *dev);
51
52 /*
53  * tegra_bb_clear_ipc: clear BB2AP IPC irq status
54  * @param struct tegra_bb device pointer
55  * @return none
56  */
57 void tegra_bb_clear_ipc(struct platform_device *dev);
58
59 /*
60  * tegra_bb_check_ipc: check if IRQ is cleared by BB
61  * @param struct tegra_bb device pointer
62  * @return 1 if IRQ is cleared - 0 otherwise
63  */
64 int tegra_bb_check_ipc(struct platform_device *dev);
65
66 /*
67  * tegra_bb_check_bb2ap_ipc: check if BB IPC IRQ is pending
68  * @param none
69  * @return 1 if IRQ is pending - 0 otherwise
70  */
71 int tegra_bb_check_bb2ap_ipc(void);
72
73 /*
74  * tegra_bb_set_ipc_serial: store SHM serial number for sysfs access
75  * @param struct tegra_bb device pointer
76  * @param serial pointer to SHM serial
77  * @return none
78  */
79 void tegra_bb_set_ipc_serial(struct platform_device *pdev, char *serial);
80
81 /* tegra_bb_set_emc_floor: set EMC frequency floor for BBC
82  * @param unsigned int frequency
83  * @return none
84  */
85 void tegra_bb_set_emc_floor(struct device *dev, unsigned long freq, u32 flags);
86
87 #endif