From 34abc3d3aa1713ee94248e3dd0bbe443af70f2c4 Mon Sep 17 00:00:00 2001 From: Rajkumar Ayyasamy Date: Mon, 5 Feb 2018 13:34:02 +0530 Subject: [PATCH] ipq806x: pcie: Fix PCI 2.0 cards probing This patch putting pci into reset and waiting for 2ms. Change-Id: Ied3863f50956f5c099f3c4c0ed7f2df55573ca0b Signed-off-by: Rajkumar Ayyasamy --- board/qca/arm/ipq806x/ipq806x.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/board/qca/arm/ipq806x/ipq806x.c b/board/qca/arm/ipq806x/ipq806x.c index 8f1c6408e0..ef8178a8de 100644 --- a/board/qca/arm/ipq806x/ipq806x.c +++ b/board/qca/arm/ipq806x/ipq806x.c @@ -419,8 +419,9 @@ void board_pcie_clock_init(int id) void board_pci_init(int id) { - int node, gpio_node; + int node, gpio_node, offset; char name[16]; + u32 gpio; sprintf(name, "pci%d", id); node = fdt_path_offset(gd->fdt_blob, name); @@ -429,8 +430,16 @@ void board_pci_init(int id) return; } gpio_node = fdt_subnode_offset(gd->fdt_blob, node, "pci_gpio"); - if (gpio_node >= 0) + if (gpio_node >= 0) { qca_gpio_init(gpio_node); + offset = fdt_first_subnode(gd->fdt_blob, gpio_node); + if (offset) { + gpio = fdtdec_get_uint(gd->fdt_blob, + offset, "gpio", 0); + gpio_set_value(gpio, 1); + udelay(3000); + } + } return; }