summaryrefslogtreecommitdiffstats
path: root/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c
diff options
context:
space:
mode:
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-06-26 19:15:57 +0000
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-06-26 19:15:57 +0000
commitd2c03b9bffdd01672ff178d2b1a8a93576aaffbb (patch)
treeccb2168c087861c92d565a07b980ad06825055d1 /target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c
parent36c008077538d37b3778fc89c9ece8d84c57d22c (diff)
generic: rtl8366: introduce rtl8366_smi_ops
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21910 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c')
-rw-r--r--target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c
index 7091190b8..d40d9e7f7 100644
--- a/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c
+++ b/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c
@@ -272,6 +272,9 @@ int rtl8366_smi_init(struct rtl8366_smi *smi)
if (!smi->parent)
return -EINVAL;
+ if (!smi->ops)
+ return -EINVAL;
+
err = gpio_request(smi->gpio_sda, dev_name(smi->parent));
if (err) {
dev_err(smi->parent, "gpio_request failed for %u, err=%d\n",
@@ -291,8 +294,16 @@ int rtl8366_smi_init(struct rtl8366_smi *smi)
dev_info(smi->parent, "using GPIO pins %u (SDA) and %u (SCK)\n",
smi->gpio_sda, smi->gpio_sck);
+ err = smi->ops->detect(smi);
+ if (err) {
+ dev_err(smi->parent, "chip detection failed, err=%d\n", err);
+ goto err_free_sck;
+ }
+
return 0;
+ err_free_sck:
+ gpio_free(smi->gpio_sck);
err_free_sda:
gpio_free(smi->gpio_sda);
err_out: