Hello Baruch, Sorry for the delayed review. On Wed, 3 Oct 2018 15:49:43 +0300, Baruch Siach wrote: > #define PCIE_VENDOR_REGS_OFFSET 0x8000 > @@ -137,6 +139,12 @@ static int armada8k_pcie_host_init(struct pcie_port *pp) > struct dw_pcie *pci = to_dw_pcie_from_pp(pp); > struct armada8k_pcie *pcie = to_armada8k_pcie(pci); > > + if (pcie->reset_gpio) { This should be: if (!IS_ERR(pcie->reset_gpio)) Indeed, in the case of an error, pcie->reset_gpio will be non-NULL, with the error encoded as a ERR_PTR(). > + /* assert and then deassert the reset signal */ > + gpiod_set_value_cansleep(pcie->reset_gpio, 1); > + msleep(100); > + gpiod_set_value_cansleep(pcie->reset_gpio, 0); > + } > dw_pcie_setup_rc(pp); An empty new line here would be good before the dw_pcie_setup_rc() call. If you send a new iteration with those two issues fixed, you can directly add my Acked-by: Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxx> Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com