diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-01-07 19:36:30 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-01-07 19:36:30 +0000 | 
| commit | d80f2ee46b0e276713bbdf1579e9f5816b04f545 (patch) | |
| tree | 3520cfea51f2aacaa9915c0d1eccf045a04cdc50 | |
| parent | d43b4effd9097b9139ad66f5e3f25320d67de283 (diff) | |
generic: rtl8366: preparing for RTL8367 support
* make clock delay configurable
* make read,write commands configurable
* use u16 for member and untag fields
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29677 3c298f89-4303-0410-b956-a3cf2f4a3e73
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; | 
