diff options
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy')
| -rw-r--r-- | target/linux/generic/files/drivers/net/phy/ar8216.c | 47 | 
1 files changed, 33 insertions, 14 deletions
| diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index 4c83a6f62..f7fbf4e49 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -1742,9 +1742,6 @@ ar8xxx_mib_init(struct ar8216_priv *priv)  	if (!priv->mib_stats)  		return -ENOMEM; -	mutex_init(&priv->mib_lock); -	INIT_DELAYED_WORK(&priv->mib_work, ar8xxx_mib_work_func); -  	return 0;  } @@ -1768,6 +1765,37 @@ ar8xxx_mib_cleanup(struct ar8216_priv *priv)  	kfree(priv->mib_stats);  } +static struct ar8216_priv * +ar8xxx_create(void) +{ +	struct ar8216_priv *priv; + +	priv = kzalloc(sizeof(struct ar8216_priv), GFP_KERNEL); +	if (priv == NULL) +		return NULL; + +	mutex_init(&priv->reg_mutex); +	mutex_init(&priv->mib_lock); +	INIT_DELAYED_WORK(&priv->mib_work, ar8xxx_mib_work_func); + +	return priv; +} + +static struct ar8216_priv * +ar8xxx_create_mii(struct mii_bus *bus) +{ +	struct ar8216_priv *priv; + +	priv = ar8xxx_create(); +	if (priv) { +		priv->mii_bus = bus; +		priv->read = ar8216_mii_read; +		priv->write = ar8216_mii_write; +	} + +	return priv; +} +  static int  ar8216_config_init(struct phy_device *pdev)  { @@ -1777,14 +1805,10 @@ ar8216_config_init(struct phy_device *pdev)  	int ret;  	if (!priv) { -		priv = kzalloc(sizeof(struct ar8216_priv), GFP_KERNEL); +		priv = ar8xxx_create_mii(pdev->bus);  		if (priv == NULL)  			return -ENOMEM; -		priv->mii_bus = pdev->bus; -		priv->read = ar8216_mii_read; -		priv->write = ar8216_mii_write; -  		ret = ar8216_id_chip(priv);  		if (ret)  			goto err_free_priv; @@ -1829,8 +1853,6 @@ ar8216_config_init(struct phy_device *pdev)  		return 0;  	} -	mutex_init(&priv->reg_mutex); -  	pdev->priv = priv;  	swdev = &priv->dev; @@ -2006,13 +2028,10 @@ ar8216_probe(struct phy_device *pdev)  	if (!ar8xxx_is_possible(pdev->bus))  		return -ENODEV; -	priv = kzalloc(sizeof(struct ar8216_priv), GFP_KERNEL); +	priv = ar8xxx_create_mii(pdev->bus);  	if (priv == NULL)  		return -ENOMEM; -	priv->mii_bus = pdev->bus; -	priv->read = ar8216_mii_read; -	priv->write = ar8216_mii_write;  	priv->phy = pdev;  	ret = ar8216_id_chip(priv); | 
