Thread (19 messages) 19 messages, 2 authors, 2024-07-24

Re: [PATCH net-next RFC v15 11/14] net: stmmac: dwmac-loongson: Add DT-less GMAC PCI-device support

From: Yanteng Si <hidden>
Date: 2024-07-24 09:24:06

在 2024/7/22 23:27, Simon Horman 写道:
On Mon, Jul 22, 2024 at 07:01:09PM +0800, Yanteng Si wrote:
quoted
The Loongson GMAC driver currently supports the network controllers
installed on the LS2K1000 SoC and LS7A1000 chipset, for which the GMAC
devices are required to be defined in the platform device tree source.
But Loongson machines may have UEFI (implies ACPI) or PMON/UBOOT
(implies FDT) as the system bootloaders. In order to have both system
configurations support let's extend the driver functionality with the
case of having the Loongson GMAC probed on the PCI bus with no device
tree node defined for it. That requires to make the device DT-node
optional, to rely on the IRQ line detected by the PCI core and to
have the MDIO bus ID calculated using the PCIe Domain+BDF numbers.

In order to have the device probe() and remove() methods less
complicated let's move the DT- and ACPI-specific code to the
respective sub-functions.

Signed-off-by: Feiyang Chen<redacted>
Signed-off-by: Yinggang Gu<redacted>
Acked-by: Huacai Chen<redacted>
Signed-off-by: Yanteng Si<redacted>
---
  .../ethernet/stmicro/stmmac/dwmac-loongson.c  | 160 +++++++++++-------
  1 file changed, 101 insertions(+), 59 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
...
quoted
@@ -90,25 +158,20 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id
  	if (!plat->mdio_bus_data)
  		return -ENOMEM;
  
-	plat->mdio_node = of_get_child_by_name(np, "mdio");
-	if (plat->mdio_node) {
-		dev_info(&pdev->dev, "Found MDIO subnode\n");
-		plat->mdio_bus_data->needs_reset = true;
-	}
-
  	plat->dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*plat->dma_cfg), GFP_KERNEL);
-	if (!plat->dma_cfg) {
-		ret = -ENOMEM;
-		goto err_put_node;
-	}
+	if (!plat->dma_cfg)
+		return -ENOMEM;
  
  	/* Enable pci device */
  	ret = pci_enable_device(pdev);
  	if (ret) {
  		dev_err(&pdev->dev, "%s: ERROR: failed to enable device\n", __func__);
  		goto err_put_node;
+		return ret;
This seems incorrect: this line will never be executed.
Sorry, I will drop it in v15.


Thanks,

Yanteng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help