diff options
4 files changed, 17 insertions, 9 deletions
| 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 f0a92bcd7..c3fde0dd1 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c @@ -24,11 +24,10 @@  #include "rtl8366_smi.h"  #define RTL8366_SMI_ACK_RETRY_COUNT         5 -#define RTL8366_SMI_CLK_DELAY               10 /* nsec */  static inline void rtl8366_smi_clk_delay(struct rtl8366_smi *smi)  { -	ndelay(RTL8366_SMI_CLK_DELAY); +	ndelay(smi->clk_delay);  }  static void rtl8366_smi_start(struct rtl8366_smi *smi) @@ -198,7 +197,7 @@ int rtl8366_smi_read_reg(struct rtl8366_smi *smi, u32 addr, u32 *data)  	rtl8366_smi_start(smi);  	/* send READ command */ -	ret = rtl8366_smi_write_byte(smi, 0x0a << 4 | 0x04 << 1 | 0x01); +	ret = rtl8366_smi_write_byte(smi, smi->cmd_read);  	if (ret)  		goto out; @@ -239,7 +238,7 @@ int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data)  	rtl8366_smi_start(smi);  	/* send WRITE command */ -	ret = rtl8366_smi_write_byte(smi, 0x0a << 4 | 0x04 << 1 | 0x00); +	ret = rtl8366_smi_write_byte(smi, smi->cmd_write);  	if (ret)  		goto out; 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 2e84a8d91..9db2576c8 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h @@ -32,6 +32,9 @@ struct rtl8366_smi {  	struct device		*parent;  	unsigned int		gpio_sda;  	unsigned int		gpio_sck; +	unsigned int		clk_delay;	/* ns */ +	u8			cmd_read; +	u8			cmd_write;  	spinlock_t		lock;  	struct mii_bus		*mii_bus;  	int			mii_irq[PHY_MAX_ADDR]; @@ -58,16 +61,16 @@ struct rtl8366_smi {  struct rtl8366_vlan_mc {  	u16	vid; -	u8	priority; -	u8	untag; -	u8	member; +	u16	untag; +	u16	member;  	u8	fid; +	u8	priority;  };  struct rtl8366_vlan_4k {  	u16	vid; -	u8	untag; -	u8	member; +	u16	untag; +	u16	member;  	u8	fid;  }; diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c index b337408b5..49dd03e27 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c @@ -1247,6 +1247,9 @@ static int __devinit rtl8366rb_probe(struct platform_device *pdev)  	smi->gpio_sda = pdata->gpio_sda;  	smi->gpio_sck = pdata->gpio_sck; +	smi->clk_delay = 10; +	smi->cmd_read = 0xa9; +	smi->cmd_write = 0xa8;  	smi->ops = &rtl8366rb_smi_ops;  	smi->cpu_port = RTL8366RB_PORT_NUM_CPU;  	smi->num_ports = RTL8366RB_NUM_PORTS; diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366s.c b/target/linux/generic/files/drivers/net/phy/rtl8366s.c index 30916589b..27e9aa45e 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366s.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366s.c @@ -1127,6 +1127,9 @@ static int __devinit rtl8366s_probe(struct platform_device *pdev)  	smi->gpio_sda = pdata->gpio_sda;  	smi->gpio_sck = pdata->gpio_sck; +	smi->clk_delay = 10; +	smi->cmd_read = 0xa9; +	smi->cmd_write = 0xa8;  	smi->ops = &rtl8366s_smi_ops;  	smi->cpu_port = RTL8366S_PORT_NUM_CPU;  	smi->num_ports = RTL8366S_NUM_PORTS; | 
