Re: [PATCH 4/5] PCI: dwc: rcar-gen4: Handle PERST via reset subsystem
Marek Vasut <[email protected]>
| Newsgroups | org.kernel.vger.linux-renesas-soc,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
On 7/14/26 5:07 PM, Geert Uytterhoeven wrote:
Hello Geert,
>> +++ b/drivers/pci/controller/dwc/pcie-rcar-gen4.c
>
>> @@ -299,10 +300,27 @@ static void rcar_gen4_pcie_unprepare(struct rcar_gen4_pcie *rcar)
>>
>> static int rcar_gen4_pcie_get_resources(struct rcar_gen4_pcie *rcar)
>> {
>> + struct device *dev = rcar->dw.dev;
>> + struct reset_control *perst;
>> +
>> rcar->phy_base = devm_platform_ioremap_resource_byname(rcar->pdev, "phy");
>> if (IS_ERR(rcar->phy_base))
>> return PTR_ERR(rcar->phy_base);
>>
>> + rcar->perst = NULL;
>> + for_each_available_child_of_node_scoped(dev->of_node, of_port) {
>> + perst = of_reset_control_get(of_port, "perst");
>> + if (IS_ERR(perst)) {
>> + if (PTR_ERR(perst) != -EPROBE_DEFER)
>> + dev_err(dev, "Failed to get PERST#\n");
>> + return PTR_ERR(perst);
>
> return dev_err_probe(...)?
>
> This error condition is triggered on Sparrow Hawk and White Hawk,
> as their DTS does not have perst:
>
> pcie-rcar-gen4 e65d0000.pcie: Failed to get PERST#
> pcie-rcar-gen4 e65d0000.pcie: probe with driver pcie-rcar-gen4
> failed with error -2
I switched to of_reset_control_get_optional_exclusive() and cleaned the
reset handling further in V2.