generic: ar8216: add ar8xxx_create{,mii} helpers

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35543 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Gabor Juhos 2013-02-10 18:42:04 +00:00
parent 69cbfbe045
commit 03be1ea0f4
1 changed files with 33 additions and 14 deletions

View File

@ -1742,9 +1742,6 @@ ar8xxx_mib_init(struct ar8216_priv *priv)
if (!priv->mib_stats) if (!priv->mib_stats)
return -ENOMEM; return -ENOMEM;
mutex_init(&priv->mib_lock);
INIT_DELAYED_WORK(&priv->mib_work, ar8xxx_mib_work_func);
return 0; return 0;
} }
@ -1768,6 +1765,37 @@ ar8xxx_mib_cleanup(struct ar8216_priv *priv)
kfree(priv->mib_stats); 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 static int
ar8216_config_init(struct phy_device *pdev) ar8216_config_init(struct phy_device *pdev)
{ {
@ -1777,14 +1805,10 @@ ar8216_config_init(struct phy_device *pdev)
int ret; int ret;
if (!priv) { if (!priv) {
priv = kzalloc(sizeof(struct ar8216_priv), GFP_KERNEL); priv = ar8xxx_create_mii(pdev->bus);
if (priv == NULL) if (priv == NULL)
return -ENOMEM; return -ENOMEM;
priv->mii_bus = pdev->bus;
priv->read = ar8216_mii_read;
priv->write = ar8216_mii_write;
ret = ar8216_id_chip(priv); ret = ar8216_id_chip(priv);
if (ret) if (ret)
goto err_free_priv; goto err_free_priv;
@ -1829,8 +1853,6 @@ ar8216_config_init(struct phy_device *pdev)
return 0; return 0;
} }
mutex_init(&priv->reg_mutex);
pdev->priv = priv; pdev->priv = priv;
swdev = &priv->dev; swdev = &priv->dev;
@ -2006,13 +2028,10 @@ ar8216_probe(struct phy_device *pdev)
if (!ar8xxx_is_possible(pdev->bus)) if (!ar8xxx_is_possible(pdev->bus))
return -ENODEV; return -ENODEV;
priv = kzalloc(sizeof(struct ar8216_priv), GFP_KERNEL); priv = ar8xxx_create_mii(pdev->bus);
if (priv == NULL) if (priv == NULL)
return -ENOMEM; return -ENOMEM;
priv->mii_bus = pdev->bus;
priv->read = ar8216_mii_read;
priv->write = ar8216_mii_write;
priv->phy = pdev; priv->phy = pdev;
ret = ar8216_id_chip(priv); ret = ar8216_id_chip(priv);