1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-04-21 12:27:27 +03:00

generic: rtl836x: add hw_reset field to struct rtl8366_smi

It will be used to start/stop the switch if that is
supported by the given board.

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32943 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg
2012-08-02 09:54:21 +00:00
parent 7f000ed40c
commit 08700f9817
7 changed files with 35 additions and 2 deletions

View File

@@ -308,6 +308,19 @@ int rtl8366_smi_rmwr(struct rtl8366_smi *smi, u32 addr, u32 mask, u32 data)
}
EXPORT_SYMBOL_GPL(rtl8366_smi_rmwr);
static int rtl8366_reset(struct rtl8366_smi *smi)
{
if (smi->hw_reset) {
smi->hw_reset(true);
msleep(25);
smi->hw_reset(false);
msleep(25);
return 0;
}
return smi->ops->reset_chip(smi);
}
static int rtl8366_mc_is_used(struct rtl8366_smi *smi, int mc_index, int *used)
{
int err;
@@ -938,7 +951,7 @@ int rtl8366_sw_reset_switch(struct switch_dev *dev)
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
int err;
err = smi->ops->reset_chip(smi);
err = rtl8366_reset(smi);
if (err)
return err;
@@ -1227,6 +1240,13 @@ static int __rtl8366_smi_init(struct rtl8366_smi *smi, const char *name)
}
spin_lock_init(&smi->lock);
/* start the switch */
if (smi->hw_reset) {
smi->hw_reset(false);
msleep(25);
}
return 0;
err_free_sda:
@@ -1237,6 +1257,9 @@ static int __rtl8366_smi_init(struct rtl8366_smi *smi, const char *name)
static void __rtl8366_smi_cleanup(struct rtl8366_smi *smi)
{
if (smi->hw_reset)
smi->hw_reset(true);
gpio_free(smi->gpio_sck);
gpio_free(smi->gpio_sda);
}
@@ -1300,7 +1323,7 @@ int rtl8366_smi_init(struct rtl8366_smi *smi)
goto err_free_sck;
}
err = smi->ops->reset_chip(smi);
err = rtl8366_reset(smi);
if (err)
goto err_free_sck;