Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
arm
mach-tegra
board-harmony-pcie.c
Go to the documentation of this file.
1
/*
2
* arch/arm/mach-tegra/board-harmony-pcie.c
3
*
4
* Copyright (C) 2010 CompuLab, Ltd.
5
* Mike Rapoport <
[email protected]
>
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
#include <linux/kernel.h>
19
#include <
linux/gpio.h
>
20
#include <
linux/err.h
>
21
#include <
linux/of_gpio.h
>
22
#include <
linux/regulator/consumer.h
>
23
24
#include <
asm/mach-types.h
>
25
26
#include "
board.h
"
27
28
#ifdef CONFIG_TEGRA_PCI
29
30
int
__init
harmony_pcie_init(
void
)
31
{
32
struct
device_node
*np;
33
int
en_vdd_1v05;
34
struct
regulator
*
regulator
=
NULL
;
35
int
err
;
36
37
np =
of_find_node_by_path
(
"/regulators/regulator@3"
);
38
if
(!np) {
39
pr_err
(
"%s: of_find_node_by_path failed\n"
, __func__);
40
return
-
ENODEV
;
41
}
42
43
en_vdd_1v05 = of_get_named_gpio(np,
"gpio"
, 0);
44
if
(en_vdd_1v05 < 0) {
45
pr_err
(
"%s: of_get_named_gpio failed: %d\n"
, __func__,
46
en_vdd_1v05);
47
return
en_vdd_1v05;
48
}
49
50
err =
gpio_request
(en_vdd_1v05,
"EN_VDD_1V05"
);
51
if
(err) {
52
pr_err
(
"%s: gpio_request failed: %d\n"
, __func__, err);
53
return
err
;
54
}
55
56
gpio_direction_output
(en_vdd_1v05, 1);
57
58
regulator =
regulator_get
(
NULL
,
"vdd_ldo0,vddio_pex_clk"
);
59
if
(IS_ERR_OR_NULL(regulator)) {
60
pr_err
(
"%s: regulator_get failed: %d\n"
, __func__,
61
(
int
)PTR_ERR(regulator));
62
goto
err_reg;
63
}
64
65
regulator_enable
(regulator);
66
67
err =
tegra_pcie_init
(
true
,
true
);
68
if
(err) {
69
pr_err
(
"%s: tegra_pcie_init failed: %d\n"
, __func__, err);
70
goto
err_pcie;
71
}
72
73
return
0;
74
75
err_pcie:
76
regulator_disable
(regulator);
77
regulator_put
(regulator);
78
err_reg:
79
gpio_free
(en_vdd_1v05);
80
81
return
err
;
82
}
83
84
#endif
Generated on Thu Jan 10 2013 13:02:06 for Linux Kernel by
1.8.2