On Thu, 2018-10-04 at 13:20 +0000, Leonard Crestez wrote: > On Thu, 2018-10-04 at 10:59 +0200, Lucas Stach wrote: > > Am Montag, den 01.10.2018, 22:53 +0300 schrieb Leonard Crestez: > > > When the root complex suspends it must send a PME_Turn_Off TLP. > > > Implement this by asserting the "turnoff" reset. > > > > > > +static void imx6_pcie_pm_turnoff(struct imx6_pcie *imx6_pcie) > > > +{ > > > + reset_control_assert(imx6_pcie->turnoff_reset); > > > + reset_control_deassert(imx6_pcie->turnoff_reset); > > > > I'm a bit surprised to see no timing requirements here. I would have > > expected that there is a minimum time from asserting the reset, so the > > turnoff message gets transmitted to the EP before the clocks are > > stopped. > > According to the PCI standard after PME_Turn_Off is sent all components > must respond with PME_TO_Ack. There doesn't seem to be any bit exposed > to check if acks were received but the standard recommends a 1-10ms > timeout after which you should proceed anyway. > > It seems the NXP vendor tree has an udelay(1000) which I missed, it > seems like an acceptable solution. Or maybe it should be msleep(10)? Maybe usleep_range(1000, 10000) ? regards Philipp