ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / board-ardbeg-sata.c
1 /*
2  *
3  * Copyright (c) 2013, NVIDIA CORPORATION.  All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms and conditions of the GNU General Public License,
7  * version 2, as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include <linux/io.h>
19 #include <linux/kernel.h>
20 #include <linux/platform_data/tegra_ahci.h>
21
22 #include "board.h"
23 #include "board-ardbeg.h"
24 #include "devices.h"
25 #include "iomap.h"
26 #include "tegra-board-id.h"
27
28 #ifdef CONFIG_SATA_AHCI_TEGRA
29 static struct tegra_ahci_platform_data tegra_ahci_platform_data0 = {
30         .gen2_rx_eq = -1,
31         .pexp_gpio = PMU_TCA6416_GPIO(9),
32 };
33 #endif
34
35 void arbdeg_sata_clk_gate(void)
36 {
37         u32 val;
38         val = readl(IO_ADDRESS(CLK_RST_CNTRL_RST_DEV_W_SET));
39         if (val & SET_CEC_RST)
40                 writel(0x108, IO_ADDRESS(CLK_RST_CNTRL_RST_DEV_V_SET));
41         val = readl(IO_ADDRESS(CLK_RST_CNTRL_RST_DEV_W_SET));
42         while (val & SET_CEC_RST)
43                 val = readl(IO_ADDRESS(CLK_RST_CNTRL_RST_DEV_W_SET));
44 }
45
46 int __init ardbeg_sata_init(void)
47 {
48 #ifdef CONFIG_SATA_AHCI_TEGRA
49         struct board_info board_info;
50         tegra_get_board_info(&board_info);
51         if ((board_info.board_id != BOARD_PM358) &&
52             (board_info.board_id != BOARD_PM359))
53                 tegra_ahci_platform_data0.pexp_gpio = -1;
54
55         tegra_sata_device.dev.platform_data = &tegra_ahci_platform_data0;
56         platform_device_register(&tegra_sata_device);
57 #endif
58         return 0;
59 }