From bb291d1fd5d89e4f621613a086e19f32d23ed73f Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Fri, 7 Jun 2013 15:48:23 +0200 Subject: 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. --- arch/arm/mach-tegra/board-apalis_t30.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3