blob: 3b7ad07fcbcb304245284c1f3a3b46d10c51358b [file] [log] [blame]
Stephen Warren54862bf2011-12-16 15:12:31 -07001/*
Stephen Warrenf30d12b2011-12-13 15:21:01 -07002 * Copyright (c) 2011,2012, NVIDIA CORPORATION. All rights reserved.
Stephen Warren54862bf2011-12-16 15:12:31 -07003 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 */
14
Stephen Warrena58116f2011-12-16 15:12:32 -070015#include <linux/device.h>
16#include <linux/kernel.h>
17#include <linux/notifier.h>
Stephen Warren54862bf2011-12-16 15:12:31 -070018#include <linux/of.h>
Stephen Warrena58116f2011-12-16 15:12:32 -070019#include <linux/string.h>
Stephen Warren54862bf2011-12-16 15:12:31 -070020
Stephen Warren54862bf2011-12-16 15:12:31 -070021#include "board-pinmux.h"
22#include "devices.h"
23
Stephen Warrenf30d12b2011-12-13 15:21:01 -070024unsigned long tegra_pincfg_pullnone_driven[2] = {
25 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_NONE),
26 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_DRIVEN),
27};
Stephen Warren54862bf2011-12-16 15:12:31 -070028
Stephen Warrenf30d12b2011-12-13 15:21:01 -070029unsigned long tegra_pincfg_pullnone_tristate[2] = {
30 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_NONE),
31 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_TRISTATE),
32};
Stephen Warren54862bf2011-12-16 15:12:31 -070033
Stephen Warrenf30d12b2011-12-13 15:21:01 -070034unsigned long tegra_pincfg_pullnone_na[1] = {
35 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_NONE),
36};
Stephen Warren54862bf2011-12-16 15:12:31 -070037
Stephen Warrenf30d12b2011-12-13 15:21:01 -070038unsigned long tegra_pincfg_pullup_driven[2] = {
39 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_UP),
40 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_DRIVEN),
41};
Stephen Warren54862bf2011-12-16 15:12:31 -070042
Stephen Warrenf30d12b2011-12-13 15:21:01 -070043unsigned long tegra_pincfg_pullup_tristate[2] = {
44 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_UP),
45 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_TRISTATE),
46};
Stephen Warrena58116f2011-12-16 15:12:32 -070047
Stephen Warrenf30d12b2011-12-13 15:21:01 -070048unsigned long tegra_pincfg_pullup_na[1] = {
49 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_UP),
50};
Stephen Warrena58116f2011-12-16 15:12:32 -070051
Stephen Warrenf30d12b2011-12-13 15:21:01 -070052unsigned long tegra_pincfg_pulldown_driven[2] = {
53 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_DOWN),
54 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_DRIVEN),
55};
Stephen Warrena58116f2011-12-16 15:12:32 -070056
Stephen Warrenf30d12b2011-12-13 15:21:01 -070057unsigned long tegra_pincfg_pulldown_tristate[2] = {
58 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_DOWN),
59 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_TRISTATE),
60};
Stephen Warren3e215d02012-02-18 01:04:55 -070061
Stephen Warrenf30d12b2011-12-13 15:21:01 -070062unsigned long tegra_pincfg_pulldown_na[1] = {
63 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_PULL, TEGRA_PINCONFIG_PULL_DOWN),
64};
Stephen Warren3e215d02012-02-18 01:04:55 -070065
Stephen Warrenf30d12b2011-12-13 15:21:01 -070066unsigned long tegra_pincfg_pullna_driven[1] = {
67 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_DRIVEN),
68};
Stephen Warrena58116f2011-12-16 15:12:32 -070069
Stephen Warrenf30d12b2011-12-13 15:21:01 -070070unsigned long tegra_pincfg_pullna_tristate[1] = {
71 TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, TEGRA_PINCONFIG_TRISTATE),
Stephen Warrena58116f2011-12-16 15:12:32 -070072};
73
74static struct platform_device *devices[] = {
75 &tegra_gpio_device,
76 &tegra_pinmux_device,
77};
78
79void tegra_board_pinmux_init(struct tegra_board_pinmux_conf *conf_a,
80 struct tegra_board_pinmux_conf *conf_b)
81{
Stephen Warrenf30d12b2011-12-13 15:21:01 -070082 if (conf_a)
83 pinctrl_register_mappings(conf_a->maps, conf_a->map_count);
84 if (conf_b)
85 pinctrl_register_mappings(conf_b->maps, conf_b->map_count);
Stephen Warren54862bf2011-12-16 15:12:31 -070086
87 if (!of_machine_is_compatible("nvidia,tegra20"))
88 platform_add_devices(devices, ARRAY_SIZE(devices));
89}