[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