Re: [net-next PATCH RFC v3 2/8] net: phy: add initial support for PHY package in DT

From: Andrew Lunn
Date: Mon Nov 27 2023 - 19:39:14 EST


> +static int of_phy_package(struct phy_device *phydev)
> +{
> + struct device_node *node = phydev->mdio.dev.of_node;
> + struct device_node *package_node;
> + u32 base_addr;
> + int ret;
> +
> + if (!node)
> + return 0;
> +
> + package_node = of_get_parent(node);
> + if (!package_node)
> + return 0;
> +
> + if (!of_device_is_compatible(package_node, "ethernet-phy-package"))
> + return 0;
> +
> + if (of_property_read_u32(package_node, "reg", &base_addr))
> + return -EINVAL;
> +
> + ret = devm_phy_package_join(&phydev->mdio.dev, phydev,
> + base_addr, 0);

No don't do this. It is just going to lead to errors. The PHY driver
knows how many PHYs are in the package. So it can figure out what the
base address is and create the package. It can add each PHY as they
probe. That cannot go wrong.

If you create the package based on DT you have to validate that the DT
is correct. You need the same information, the base address, how many
packages are in the PHY, etc. So DT gains your nothing except more
potential to get it wrong.

Please use DT just for properties for the package, nothing else.

Andrew