arm: tegra: sd: enable sd dpd
[linux-2.6.git] / arch / arm / mach-tegra / include / mach / io_dpd.h
1 /*
2  * arch/arm/mach-tegra/include/mach/io_dpd.h
3  *
4  * Copyright (c) 2012, 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 #ifndef __MACH_TEGRA_IO_DPD_H
18 #define __MACH_TEGRA_IO_DPD_H
19 #include <linux/delay.h>
20
21 /* Tegra io dpd entry - for each supported driver */
22 struct tegra_io_dpd {
23         const char *name;       /* driver name */
24         u8 io_dpd_reg_index;    /* io dpd register index */
25         u8 io_dpd_bit;          /* bit position for driver in dpd register */
26         u8 need_delay_dpd;      /* work around to delay dpd after lp0*/
27         struct delayed_work     delay_dpd;
28         struct mutex            delay_lock;
29 };
30
31
32 /* Tegra io dpd APIs */
33 struct tegra_io_dpd *tegra_io_dpd_get(struct device *dev); /* get handle */
34 void tegra_io_dpd_enable(struct tegra_io_dpd *hnd); /* enable dpd */
35 void tegra_io_dpd_disable(struct tegra_io_dpd *hnd); /* disable dpd */
36 int tegra_io_dpd_init(void);
37
38 #endif /* end __MACH_TEGRA_IO_DPD_H */