generic: rtl8366: introduce rtl8366_smi_alloc
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 15 Jul 2010 13:05:16 +0000 (13:05 +0000)
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 15 Jul 2010 13:05:16 +0000 (13:05 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22195 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
target/linux/generic/files/drivers/net/phy/rtl8366_smi.h
target/linux/generic/files/drivers/net/phy/rtl8366rb.c
target/linux/generic/files/drivers/net/phy/rtl8366s.c

index d0b3680..ac8862c 100644 (file)
@@ -741,13 +741,27 @@ static void rtl8366_smi_mii_cleanup(struct rtl8366_smi *smi)
        mdiobus_free(smi->mii_bus);
 }
 
+struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent)
+{
+       struct rtl8366_smi *smi;
+
+       BUG_ON(!parent);
+
+       smi = kzalloc(sizeof(*smi), GFP_KERNEL);
+       if (!smi) {
+               dev_err(parent, "no memory for private data\n");
+               return NULL;
+       }
+
+       smi->parent = parent;
+       return smi;
+}
+EXPORT_SYMBOL_GPL(rtl8366_smi_alloc);
+
 int rtl8366_smi_init(struct rtl8366_smi *smi)
 {
        int err;
 
-       if (!smi->parent)
-               return -EINVAL;
-
        if (!smi->ops)
                return -EINVAL;
 
index bd16cbe..775f959 100644 (file)
@@ -87,6 +87,7 @@ struct rtl8366_smi_ops {
                                   int port, unsigned long long *val);
 };
 
+struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent);
 int rtl8366_smi_init(struct rtl8366_smi *smi);
 void rtl8366_smi_cleanup(struct rtl8366_smi *smi);
 int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data);
index 2156078..aa0b4a0 100644 (file)
@@ -1133,14 +1133,12 @@ static int __init rtl8366rb_probe(struct platform_device *pdev)
                goto err_out;
        }
 
-       smi = kzalloc(sizeof(*smi), GFP_KERNEL);
+       smi = rtl8366_smi_alloc(&pdev->dev);
        if (!smi) {
-               dev_err(&pdev->dev, "no memory for private data\n");
                err = -ENOMEM;
                goto err_out;
        }
 
-       smi->parent = &pdev->dev;
        smi->gpio_sda = pdata->gpio_sda;
        smi->gpio_sck = pdata->gpio_sck;
        smi->ops = &rtl8366rb_smi_ops;
index 923f51a..6f3fdd5 100644 (file)
@@ -1160,14 +1160,12 @@ static int __init rtl8366s_probe(struct platform_device *pdev)
                goto err_out;
        }
 
-       smi = kzalloc(sizeof(*smi), GFP_KERNEL);
+       smi = rtl8366_smi_alloc(&pdev->dev);
        if (!smi) {
-               dev_err(&pdev->dev, "no memory for private data\n");
                err = -ENOMEM;
                goto err_out;
        }
 
-       smi->parent = &pdev->dev;
        smi->gpio_sda = pdata->gpio_sda;
        smi->gpio_sck = pdata->gpio_sck;
        smi->ops = &rtl8366s_smi_ops;
This page took 0.032547 seconds and 4 git commands to generate.