From c66a993eacc8d1483ee50e4f8dd7dedff9c07724 Mon Sep 17 00:00:00 2001 From: Mike Rapoport Date: Wed, 9 Mar 2011 16:31:17 +0200 Subject: [PATCH] --- yaml --- r: 241741 b: refs/heads/master c: ce005cf450b2c1c93e48c45a4cc717e9d104c054 h: refs/heads/master i: 241739: 9d2f20a22fb0de27fee5b9ab13b5e71719e0c53a v: v3 --- [refs] | 2 +- .../arch/arm/mach-tegra/board-harmony-pcie.c | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 23c2aa6989c8..118a9ffdbb40 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c4d9e4a0b9960fbf4d945bdad47ba005abe8813c +refs/heads/master: ce005cf450b2c1c93e48c45a4cc717e9d104c054 diff --git a/trunk/arch/arm/mach-tegra/board-harmony-pcie.c b/trunk/arch/arm/mach-tegra/board-harmony-pcie.c index f7e7d4514b6a..9c27b95b8d86 100644 --- a/trunk/arch/arm/mach-tegra/board-harmony-pcie.c +++ b/trunk/arch/arm/mach-tegra/board-harmony-pcie.c @@ -27,13 +27,29 @@ #ifdef CONFIG_TEGRA_PCI +/* GPIO 3 of the PMIC */ +#define EN_VDD_1V05_GPIO (TEGRA_NR_GPIOS + 2) + static int __init harmony_pcie_init(void) { + struct regulator *regulator = NULL; int err; if (!machine_is_harmony()) return 0; + err = gpio_request(EN_VDD_1V05_GPIO, "EN_VDD_1V05"); + if (err) + return err; + + gpio_direction_output(EN_VDD_1V05_GPIO, 1); + + regulator = regulator_get(NULL, "pex_clk"); + if (IS_ERR_OR_NULL(regulator)) + goto err_reg; + + regulator_enable(regulator); + tegra_pinmux_set_tristate(TEGRA_PINGROUP_GPV, TEGRA_TRI_NORMAL); tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXA, TEGRA_TRI_NORMAL); tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXK, TEGRA_TRI_NORMAL); @@ -49,9 +65,15 @@ static int __init harmony_pcie_init(void) tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXA, TEGRA_TRI_TRISTATE); tegra_pinmux_set_tristate(TEGRA_PINGROUP_SLXK, TEGRA_TRI_TRISTATE); + regulator_disable(regulator); + regulator_put(regulator); +err_reg: + gpio_free(EN_VDD_1V05_GPIO); + return err; } -subsys_initcall(harmony_pcie_init); +/* PCI should be initialized after I2C, mfd and regulators */ +subsys_initcall_sync(harmony_pcie_init); #endif