diff options
author | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2013-06-07 15:48:23 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2013-06-07 15:48:23 +0200 |
commit | bb291d1fd5d89e4f621613a086e19f32d23ed73f (patch) | |
tree | 265662d7518f77e340d6a61a583263476f4331e0 /arch | |
parent | 98ded38879849b362549ae806902dc25a2210425 (diff) |
apalis_t30: fix PCIe reset issue
Implement workaround for PLX PEX 8605 errata 5 (PEX_REFCLK_OUTpx/nx
Clock Outputs is not Guaranteed Until 900 us After PEX_PERST#
De-assertion) by releasing RESET_MOCI_N 1 ms after releasing
PEX_PERST_N.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-tegra/board-apalis_t30.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/board-apalis_t30.c b/arch/arm/mach-tegra/board-apalis_t30.c index 865742a87057..cf9eb5922681 100644 --- a/arch/arm/mach-tegra/board-apalis_t30.c +++ b/arch/arm/mach-tegra/board-apalis_t30.c @@ -400,11 +400,19 @@ static struct tegra_pci_platform_data apalis_t30_pci_platform_data = { static void apalis_t30_pci_init(void) { - /* Reset PLX PEX 8605 PCIe Switch on Apalis Evaluation Board */ + /* Reset PLX PEX 8605 PCIe Switch plus PCIe devices on Apalis Evaluation + Board */ gpio_request(PEX_PERST_N, "PEX_PERST_N"); + gpio_request(RESET_MOCI_N, "RESET_MOCI_N"); gpio_direction_output(PEX_PERST_N, 0); + gpio_direction_output(RESET_MOCI_N, 0); + /* Must be asserted for 100 ms after power and clocks are stable */ msleep(100); gpio_set_value(PEX_PERST_N, 1); + /* Err_5: PEX_REFCLK_OUTpx/nx Clock Outputs is not Guaranteed Until + 900 us After PEX_PERST# De-assertion */ + msleep(1); + gpio_set_value(RESET_MOCI_N, 1); tegra_pci_device.dev.platform_data = &apalis_t30_pci_platform_data; platform_device_register(&tegra_pci_device); |