From 2bcae795e9aa73877d02c575229bfa57819d062d Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Wed, 4 Feb 2015 13:09:49 +0100 Subject: pcie-imx6: improve reset function for reseting EP If the reset gpio for a PCIe switch is invalid, but a gpio for reseting downstream EP devices is valid no reset pulse for the EP devices is generated. (i.e. in the device tree reset-gpio is not defined but reset-ep-gpio is defined) The patch fixes this. Original patch from Juha Kokkonen, Huoltamoeletroniikka Ky Signed-off-by: Max Krummenacher Acked-by: Marcel Ziswiler (cherry picked from commit f593ebc9921013a992c1d096bf4cbad17c1af01b) (cherry picked from commit 8437c2f0e4fafb9a31dd260704cc6b7a22bf33f8) Conflicts: drivers/pci/host/pci-imx6.c (cherry picked from commit fc0d0a29ab0e6fc0de72b63fba80845cc554d543) --- drivers/pci/host/pci-imx6.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'drivers') diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/host/pci-imx6.c index bdd5685a91f8..ce282f065506 100644 --- a/drivers/pci/host/pci-imx6.c +++ b/drivers/pci/host/pci-imx6.c @@ -544,6 +544,11 @@ static void imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie) if (gpio_is_valid(imx6_pcie->reset_ep_gpio)) gpio_set_value_cansleep(imx6_pcie->reset_ep_gpio, 0); mdelay(20); + } else if (gpio_is_valid(imx6_pcie->reset_ep_gpio)) { + gpio_set_value_cansleep(imx6_pcie->reset_ep_gpio, 1); + mdelay(100); + gpio_set_value_cansleep(imx6_pcie->reset_ep_gpio, 0); + mdelay(20); } return; -- cgit v1.2.3