Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'mvpp2-child-port-removal'

Javier Carrasco says:

====================
net: mvpp2: rework child node/port removal handling

These two patches used to be part of another series [1] that did not
apply to the networking tree without conflicts. This is therefore just a
partial resend with no code modifications, just rebased onto net/main.

Link: https://lore.kernel.org/all/20240806181026.5fe7f777@kernel.org/ [1]
====================

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

+9 -22
+9 -22
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
··· 7417 7417 7418 7418 static int mvpp2_probe(struct platform_device *pdev) 7419 7419 { 7420 - struct fwnode_handle *fwnode = pdev->dev.fwnode; 7421 - struct fwnode_handle *port_fwnode; 7422 7420 struct mvpp2 *priv; 7423 7421 struct resource *res; 7424 7422 void __iomem *base; ··· 7589 7591 } 7590 7592 7591 7593 /* Map DTS-active ports. Should be done before FIFO mvpp2_init */ 7592 - fwnode_for_each_available_child_node(fwnode, port_fwnode) { 7594 + device_for_each_child_node_scoped(&pdev->dev, port_fwnode) { 7593 7595 if (!fwnode_property_read_u32(port_fwnode, "port-id", &i)) 7594 7596 priv->port_map |= BIT(i); 7595 7597 } ··· 7612 7614 goto err_axi_clk; 7613 7615 7614 7616 /* Initialize ports */ 7615 - fwnode_for_each_available_child_node(fwnode, port_fwnode) { 7617 + device_for_each_child_node_scoped(&pdev->dev, port_fwnode) { 7616 7618 err = mvpp2_port_probe(pdev, port_fwnode, priv); 7617 7619 if (err < 0) 7618 7620 goto err_port_probe; ··· 7651 7653 return 0; 7652 7654 7653 7655 err_port_probe: 7654 - fwnode_handle_put(port_fwnode); 7655 - 7656 - i = 0; 7657 - fwnode_for_each_available_child_node(fwnode, port_fwnode) { 7658 - if (priv->port_list[i]) 7659 - mvpp2_port_remove(priv->port_list[i]); 7660 - i++; 7661 - } 7656 + for (i = 0; i < priv->port_count; i++) 7657 + mvpp2_port_remove(priv->port_list[i]); 7662 7658 err_axi_clk: 7663 7659 clk_disable_unprepare(priv->axi_clk); 7664 7660 err_mg_core_clk: ··· 7669 7677 static void mvpp2_remove(struct platform_device *pdev) 7670 7678 { 7671 7679 struct mvpp2 *priv = platform_get_drvdata(pdev); 7672 - struct fwnode_handle *fwnode = pdev->dev.fwnode; 7673 - int i = 0, poolnum = MVPP2_BM_POOLS_NUM; 7674 - struct fwnode_handle *port_fwnode; 7680 + int i, poolnum = MVPP2_BM_POOLS_NUM; 7675 7681 7676 7682 mvpp2_dbgfs_cleanup(priv); 7677 7683 7678 - fwnode_for_each_available_child_node(fwnode, port_fwnode) { 7679 - if (priv->port_list[i]) { 7680 - mutex_destroy(&priv->port_list[i]->gather_stats_lock); 7681 - mvpp2_port_remove(priv->port_list[i]); 7682 - } 7683 - i++; 7684 + for (i = 0; i < priv->port_count; i++) { 7685 + mutex_destroy(&priv->port_list[i]->gather_stats_lock); 7686 + mvpp2_port_remove(priv->port_list[i]); 7684 7687 } 7685 7688 7686 7689 destroy_workqueue(priv->stats_queue); ··· 7698 7711 aggr_txq->descs_dma); 7699 7712 } 7700 7713 7701 - if (is_acpi_node(port_fwnode)) 7714 + if (!dev_of_node(&pdev->dev)) 7702 7715 return; 7703 7716 7704 7717 clk_disable_unprepare(priv->axi_clk);