From: Gabor Juhos Date: Sun, 29 Apr 2012 18:29:26 +0000 (+0000) Subject: linux: rtl836x: add a reset_chip callback to rtl8366_smi_ops X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=badd7a3cf29aa6c156ddc0010e68519814b456e5;p=openwrt%2Fstaging%2Fblocktrron.git linux: rtl836x: add a reset_chip callback to rtl8366_smi_ops SVN-Revision: 31534 --- diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c index e48ca99ce8..434cbfbb85 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c @@ -1277,6 +1277,10 @@ int rtl8366_smi_init(struct rtl8366_smi *smi) goto err_free_sck; } + err = smi->ops->reset_chip(smi); + if (err) + goto err_free_sck; + err = smi->ops->setup(smi); if (err) { dev_err(smi->parent, "chip setup failed, err=%d\n", err); diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h index 8b1a70dca8..1105ce47fc 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h @@ -76,6 +76,7 @@ struct rtl8366_vlan_4k { struct rtl8366_smi_ops { int (*detect)(struct rtl8366_smi *smi); + int (*reset_chip)(struct rtl8366_smi *smi); int (*setup)(struct rtl8366_smi *smi); int (*mii_read)(struct mii_bus *bus, int addr, int reg); diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c index 020e93a445..ea99aa73c2 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c @@ -1140,14 +1140,7 @@ static int rtl8366rb_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) static int rtl8366rb_setup(struct rtl8366_smi *smi) { - int ret; - - ret = rtl8366rb_reset_chip(smi); - if (ret) - return ret; - - ret = rtl8366rb_hw_init(smi); - return ret; + return rtl8366rb_hw_init(smi); } static int rtl8366rb_detect(struct rtl8366_smi *smi) @@ -1185,6 +1178,7 @@ static int rtl8366rb_detect(struct rtl8366_smi *smi) static struct rtl8366_smi_ops rtl8366rb_smi_ops = { .detect = rtl8366rb_detect, + .reset_chip = rtl8366rb_reset_chip, .setup = rtl8366rb_setup, .mii_read = rtl8366rb_mii_read, diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366s.c b/target/linux/generic/files/drivers/net/phy/rtl8366s.c index 7f9680aa11..2a8b3a7c8c 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366s.c @@ -1020,14 +1020,7 @@ static int rtl8366s_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) static int rtl8366s_setup(struct rtl8366_smi *smi) { - int ret; - - ret = rtl8366s_reset_chip(smi); - if (ret) - return ret; - - ret = rtl8366s_hw_init(smi); - return ret; + return rtl8366s_hw_init(smi); } static int rtl8366s_detect(struct rtl8366_smi *smi) @@ -1065,6 +1058,7 @@ static int rtl8366s_detect(struct rtl8366_smi *smi) static struct rtl8366_smi_ops rtl8366s_smi_ops = { .detect = rtl8366s_detect, + .reset_chip = rtl8366s_reset_chip, .setup = rtl8366s_setup, .mii_read = rtl8366s_mii_read, diff --git a/target/linux/generic/files/drivers/net/phy/rtl8367.c b/target/linux/generic/files/drivers/net/phy/rtl8367.c index 917976e302..c56a129b90 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8367.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8367.c @@ -1637,14 +1637,7 @@ static int rtl8367_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) static int rtl8367_setup(struct rtl8366_smi *smi) { - int ret; - - ret = rtl8367_reset_chip(smi); - if (ret) - return ret; - - ret = rtl8367_hw_init(smi); - return ret; + return rtl8367_hw_init(smi); } static int rtl8367_detect(struct rtl8366_smi *smi) @@ -1686,6 +1679,7 @@ static int rtl8367_detect(struct rtl8366_smi *smi) static struct rtl8366_smi_ops rtl8367_smi_ops = { .detect = rtl8367_detect, + .reset_chip = rtl8367_reset_chip, .setup = rtl8367_setup, .mii_read = rtl8367_mii_read,