Commit b96cc7fe authored by Mike Rapoport's avatar Mike Rapoport Committed by Colin Cross

ARM: tegra: add PCI Express power gating

Signed-off-by: default avatarMike Rapoport <mike@compulab.co.il>
Signed-off-by: default avatarColin Cross <ccross@android.com>
parent 1e40a97e
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include <mach/pinmux.h> #include <mach/pinmux.h>
#include <mach/iomap.h> #include <mach/iomap.h>
#include <mach/clk.h> #include <mach/clk.h>
#include <mach/powergate.h>
/* register definitions */ /* register definitions */
#define AFI_OFFSET 0x3800 #define AFI_OFFSET 0x3800
...@@ -688,13 +689,30 @@ static void tegra_pcie_power_off(void) ...@@ -688,13 +689,30 @@ static void tegra_pcie_power_off(void)
tegra_periph_reset_assert(tegra_pcie.afi_clk); tegra_periph_reset_assert(tegra_pcie.afi_clk);
tegra_periph_reset_assert(tegra_pcie.pex_clk); tegra_periph_reset_assert(tegra_pcie.pex_clk);
tegra_powergate_power_off(TEGRA_POWERGATE_PCIE);
tegra_pcie_xclk_clamp(true); tegra_pcie_xclk_clamp(true);
} }
static int tegra_pcie_power_on(void) static int tegra_pcie_power_regate(void)
{ {
int err;
tegra_pcie_power_off();
tegra_pcie_xclk_clamp(true); tegra_pcie_xclk_clamp(true);
tegra_periph_reset_assert(tegra_pcie.pcie_xclk); tegra_periph_reset_assert(tegra_pcie.pcie_xclk);
tegra_periph_reset_assert(tegra_pcie.afi_clk);
err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_PCIE,
tegra_pcie.pex_clk);
if (err) {
pr_err("PCIE: powerup sequence failed: %d\n", err);
return err;
}
tegra_periph_reset_deassert(tegra_pcie.afi_clk);
tegra_pcie_xclk_clamp(false); tegra_pcie_xclk_clamp(false);
clk_enable(tegra_pcie.afi_clk); clk_enable(tegra_pcie.afi_clk);
...@@ -759,7 +777,7 @@ static int __init tegra_pcie_get_resources(void) ...@@ -759,7 +777,7 @@ static int __init tegra_pcie_get_resources(void)
return err; return err;
} }
err = tegra_pcie_power_on(); err = tegra_pcie_power_regate();
if (err) { if (err) {
pr_err("PCIE: failed to power up: %d\n", err); pr_err("PCIE: failed to power up: %d\n", err);
goto err_pwr_on; goto err_pwr_on;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment