• Marek Behún's avatar
    arm64: dts: marvell: armada-37xx: Set pcie_reset_pin to gpio function · 71587801
    Marek Behún authored
    We found out that we are unable to control the PERST# signal via the
    default pin dedicated to be PERST# pin (GPIO2[3] pin) on A3700 SOC when
    this pin is in EP_PCIE1_Resetn mode. There is a register in the PCIe
    register space called PERSTN_GPIO_EN (D0088004[3]), but changing the
    value of this register does not change the pin output when measuring
    with voltmeter.
    
    We do not know if this is a bug in the SOC, or if it works only when
    PCIe controller is in a certain state.
    
    Commit f4c7d053 ("PCI: aardvark: Wait for endpoint to be ready
    before training link") says that when this pin changes pinctrl mode
    from EP_PCIE1_Resetn to GPIO, the PERST# signal is asserted for a brief
    moment.
    
    So currently the situation is that on A3700 boards the PERST# signal is
    asserted in U-Boot (because the code in U-Boot issues reset via this pin
    via GPIO mode), and then in Linux by the obscure and undocumented
    mechanism described by the above mentioned commit.
    
    We want to issue PERST# signal in a known way, therefore this patch
    changes the pcie_reset_pin function from "pcie" to "gpio" and adds the
    reset-gpios property to the PCIe node in device tree files of
    EspressoBin and Armada 3720 Dev Board (Turris Mox device tree already
    has this property and uDPU does not have a PCIe port).
    Signed-off-by: default avatarMarek Behún <marek.behun@nic.cz>
    Cc: Remi Pommarel <repk@triplefau.lt>
    Tested-by: default avatarTomasz Maciej Nowak <tmn505@gmail.com>
    Acked-by: default avatarThomas Petazzoni <thomas.petazzoni@bootlin.com>
    Signed-off-by: default avatarGregory CLEMENT <gregory.clement@bootlin.com>
    71587801
armada-3720-db.dts 4.35 KB