97131195ec93d5add55f22880220c4c838e50218
[linux-3.10.git] / arch / arm / mach-tegra / board-ardbeg-pinmux.c
1 /*
2  * arch/arm/mach-tegra/board-ardbeg-pinmux.c
3  *
4  * Copyright (c) 2013, NVIDIA Corporation. All rights reserved.
5  *
6  * This software is licensed under the terms of the GNU General Public
7  * License version 2, as published by the Free Software Foundation, and
8  * may be copied, distributed, and modified under those terms.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  */
16
17 #include <linux/kernel.h>
18 #include <linux/init.h>
19 #include <linux/gpio.h>
20 #include <mach/pinmux.h>
21 #include <mach/gpio-tegra.h>
22
23 #include "board.h"
24 #include "board-ardbeg.h"
25 #include "devices.h"
26 #include "gpio-names.h"
27
28 #include <mach/pinmux-t12.h>
29 #include "board-ardbeg-pinmux-t12x.h"
30
31 static __initdata struct tegra_drive_pingroup_config ardbeg_drive_pinmux[] = {
32
33         /* SDMMC1 */
34         SET_DRIVE(SDIO1, ENABLE, DISABLE, DIV_1, 32, 42, FASTEST, FASTEST),
35
36         /* SDMMC3 */
37         SET_DRIVE(SDIO3, ENABLE, DISABLE, DIV_1, 20, 36, FASTEST, FASTEST),
38
39         /* SDMMC4 */
40         SET_DRIVE_WITH_TYPE(GMA, ENABLE, DISABLE, DIV_1, 1, 2, FASTEST,
41                                                                 FASTEST, 1),
42 };
43
44 static void __init ardbeg_gpio_init_configure(void)
45 {
46         int len;
47         int i;
48         struct gpio_init_pin_info *pins_info;
49
50         len = ARRAY_SIZE(init_gpio_mode_ardbeg_common);
51         pins_info = init_gpio_mode_ardbeg_common;
52
53         for (i = 0; i < len; ++i) {
54                 tegra_gpio_init_configure(pins_info->gpio_nr,
55                         pins_info->is_input, pins_info->value);
56                 pins_info++;
57         }
58 }
59
60 int __init ardbeg_pinmux_init(void)
61 {
62         if (of_machine_is_compatible("nvidia,tn8"))
63                 return 0;
64
65         ardbeg_gpio_init_configure();
66
67         tegra_pinmux_config_table(ardbeg_pinmux_common, ARRAY_SIZE(ardbeg_pinmux_common));
68         tegra_drive_pinmux_config_table(ardbeg_drive_pinmux,
69                                         ARRAY_SIZE(ardbeg_drive_pinmux));
70         tegra_pinmux_config_table(unused_pins_lowpower,
71                 ARRAY_SIZE(unused_pins_lowpower));
72
73         return 0;
74 }