mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-22 18:44:44 +08:00
6e96aca397
The Harmony pinmux table is already set up to mux the PCIe signals onto the appropriate pin groups. Don't manually fiddle with the pinmux in the Harmony PCIe setup code. Merge note: This will have a merge conflict with Peter De Schrijver's "arm/tegra: prepare pinmux code for multiple tegra variants" due to context. When merging the two, make sure to also remove the include of <mach/pinmux-tegra20.h> that his patch added, since it's no longer needed after this patch. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Olof Johansson <olof@lixom.net>
69 lines
1.5 KiB
C
69 lines
1.5 KiB
C
/*
|
|
* arch/arm/mach-tegra/board-harmony-pcie.c
|
|
*
|
|
* Copyright (C) 2010 CompuLab, Ltd.
|
|
* Mike Rapoport <mike@compulab.co.il>
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/gpio.h>
|
|
#include <linux/err.h>
|
|
#include <linux/regulator/consumer.h>
|
|
|
|
#include <asm/mach-types.h>
|
|
|
|
#include "board.h"
|
|
#include "board-harmony.h"
|
|
|
|
#ifdef CONFIG_TEGRA_PCI
|
|
|
|
static int __init harmony_pcie_init(void)
|
|
{
|
|
struct regulator *regulator = NULL;
|
|
int err;
|
|
|
|
if (!machine_is_harmony())
|
|
return 0;
|
|
|
|
err = gpio_request(TEGRA_GPIO_EN_VDD_1V05_GPIO, "EN_VDD_1V05");
|
|
if (err)
|
|
return err;
|
|
|
|
gpio_direction_output(TEGRA_GPIO_EN_VDD_1V05_GPIO, 1);
|
|
|
|
regulator = regulator_get(NULL, "pex_clk");
|
|
if (IS_ERR_OR_NULL(regulator))
|
|
goto err_reg;
|
|
|
|
regulator_enable(regulator);
|
|
|
|
err = tegra_pcie_init(true, true);
|
|
if (err)
|
|
goto err_pcie;
|
|
|
|
return 0;
|
|
|
|
err_pcie:
|
|
regulator_disable(regulator);
|
|
regulator_put(regulator);
|
|
err_reg:
|
|
gpio_free(TEGRA_GPIO_EN_VDD_1V05_GPIO);
|
|
|
|
return err;
|
|
}
|
|
|
|
/* PCI should be initialized after I2C, mfd and regulators */
|
|
subsys_initcall_sync(harmony_pcie_init);
|
|
|
|
#endif
|