[PATCH 1/1] net: axi_emac: Convert to ofnode functions
Michal Simek
michal.simek at amd.com
Fri Sep 1 09:04:44 CEST 2023
On 8/11/23 09:43, Maxim Kochetkov wrote:
> FDT functions is not working when OF_LIVE is enabled.
> Convert fdt parsing functions to ofnode parsing functions.
>
> Signed-off-by: Maxim Kochetkov <fido_max at inbox.ru>
> ---
> drivers/net/xilinx_axi_emac.c | 50 +++++++++++++++++------------------
> 1 file changed, 24 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/net/xilinx_axi_emac.c b/drivers/net/xilinx_axi_emac.c
> index 39cb3cc260..54f2232768 100644
> --- a/drivers/net/xilinx_axi_emac.c
> +++ b/drivers/net/xilinx_axi_emac.c
> @@ -112,7 +112,7 @@ struct axidma_plat {
> int pcsaddr;
> int phyaddr;
> u8 eth_hasnobuf;
> - int phy_of_handle;
> + ofnode phynode;
> enum emac_variant mactype;
> };
>
> @@ -127,7 +127,7 @@ struct axidma_priv {
> struct phy_device *phydev;
> struct mii_dev *bus;
> u8 eth_hasnobuf;
> - int phy_of_handle;
> + ofnode phynode;
> enum emac_variant mactype;
> };
>
> @@ -335,8 +335,8 @@ static int axiemac_phy_init(struct udevice *dev)
> phydev->supported &= supported;
> phydev->advertising = phydev->supported;
> priv->phydev = phydev;
> - if (priv->phy_of_handle)
> - priv->phydev->node = offset_to_ofnode(priv->phy_of_handle);
> + if (ofnode_valid(priv->phynode))
> + priv->phydev->node = priv->phynode;
> phy_config(phydev);
>
> return 0;
> @@ -839,7 +839,7 @@ static int axi_emac_probe(struct udevice *dev)
> priv->eth_hasnobuf = plat->eth_hasnobuf;
> priv->pcsaddr = plat->pcsaddr;
> priv->phyaddr = plat->phyaddr;
> - priv->phy_of_handle = plat->phy_of_handle;
> + priv->phynode = plat->phynode;
> priv->interface = pdata->phy_interface;
>
> if (IS_ENABLED(CONFIG_DM_ETH_PHY))
> @@ -894,20 +894,21 @@ static int axi_emac_of_to_plat(struct udevice *dev)
> {
> struct axidma_plat *plat = dev_get_plat(dev);
> struct eth_pdata *pdata = &plat->eth_pdata;
> - int node = dev_of_offset(dev);
> - int offset = 0;
> + struct ofnode_phandle_args pcs_node, axistream_node;
> + ofnode phynode;
> + int ret;
>
> pdata->iobase = dev_read_addr(dev);
> plat->mactype = dev_get_driver_data(dev);
>
> - offset = fdtdec_lookup_phandle(gd->fdt_blob, node,
> - "axistream-connected");
> - if (offset <= 0) {
> + ret = dev_read_phandle_with_args(dev, "axistream-connected", NULL, 0, 0,
> + &axistream_node);
> + if (ret) {
> printf("%s: axistream is not found\n", __func__);
> return -EINVAL;
> }
> - plat->dmatx = (struct axidma_reg *)fdtdec_get_addr_size_auto_parent
> - (gd->fdt_blob, 0, offset, "reg", 0, NULL, false);
> +
> + plat->dmatx = (struct axidma_reg *)ofnode_get_addr(axistream_node.node);
> if (!plat->dmatx) {
> printf("%s: axi_dma register space not found\n", __func__);
> return -EINVAL;
> @@ -918,30 +919,27 @@ static int axi_emac_of_to_plat(struct udevice *dev)
> /* PHYAD 0 always redirects to the PCS/PMA PHY */
> plat->pcsaddr = 0;
>
> - offset = fdtdec_lookup_phandle(gd->fdt_blob, node,
> - "phy-handle");
> - if (offset > 0) {
> + phynode = dev_get_phy_node(dev);
> + if (ofnode_valid(phynode)) {
> if (!(IS_ENABLED(CONFIG_DM_ETH_PHY)))
> - plat->phyaddr = fdtdec_get_int(gd->fdt_blob,
> - offset,
> - "reg", -1);
> - plat->phy_of_handle = offset;
> + plat->phyaddr = ofnode_read_u32_default(phynode,
> + "reg", -1);
> + plat->phynode = phynode;
> }
>
> pdata->phy_interface = dev_read_phy_mode(dev);
> if (pdata->phy_interface == PHY_INTERFACE_MODE_NA)
> return -EINVAL;
>
> - plat->eth_hasnobuf = fdtdec_get_bool(gd->fdt_blob, node,
> - "xlnx,eth-hasnobuf");
> + plat->eth_hasnobuf = dev_read_bool(dev, "xlnx,eth-hasnobuf");
>
> if (pdata->phy_interface == PHY_INTERFACE_MODE_SGMII ||
> pdata->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
> - offset = fdtdec_lookup_phandle(gd->fdt_blob, node,
> - "pcs-handle");
> - if (offset > 0) {
> - plat->pcsaddr = fdtdec_get_int(gd->fdt_blob,
> - offset, "reg", -1);
> + ret = dev_read_phandle_with_args(dev, "pcs-handle", NULL, 0, 0,
> + &pcs_node);
> + if (!ret) {
> + plat->pcsaddr = ofnode_read_u32_default(pcs_node.node,
> + "reg", -1);
> }
> }
> }
Applied.
M
More information about the U-Boot
mailing list