generic: rtl8366: preparing for RTL8367 support

* make clock delay configurable
* make read,write commands configurable
* use u16 for member and untag fields

SVN-Revision: 29677
This commit is contained in:
Gabor Juhos 2012-01-07 19:36:30 +00:00
parent 43196813d7
commit 87fb92ee03
4 changed files with 17 additions and 9 deletions

View file

@ -24,11 +24,10 @@
#include "rtl8366_smi.h" #include "rtl8366_smi.h"
#define RTL8366_SMI_ACK_RETRY_COUNT 5 #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) 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) 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); rtl8366_smi_start(smi);
/* send READ command */ /* 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) if (ret)
goto out; goto out;
@ -239,7 +238,7 @@ int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data)
rtl8366_smi_start(smi); rtl8366_smi_start(smi);
/* send WRITE command */ /* 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) if (ret)
goto out; goto out;

View file

@ -32,6 +32,9 @@ struct rtl8366_smi {
struct device *parent; struct device *parent;
unsigned int gpio_sda; unsigned int gpio_sda;
unsigned int gpio_sck; unsigned int gpio_sck;
unsigned int clk_delay; /* ns */
u8 cmd_read;
u8 cmd_write;
spinlock_t lock; spinlock_t lock;
struct mii_bus *mii_bus; struct mii_bus *mii_bus;
int mii_irq[PHY_MAX_ADDR]; int mii_irq[PHY_MAX_ADDR];
@ -58,16 +61,16 @@ struct rtl8366_smi {
struct rtl8366_vlan_mc { struct rtl8366_vlan_mc {
u16 vid; u16 vid;
u8 priority; u16 untag;
u8 untag; u16 member;
u8 member;
u8 fid; u8 fid;
u8 priority;
}; };
struct rtl8366_vlan_4k { struct rtl8366_vlan_4k {
u16 vid; u16 vid;
u8 untag; u16 untag;
u8 member; u16 member;
u8 fid; u8 fid;
}; };

View file

@ -1247,6 +1247,9 @@ static int __devinit rtl8366rb_probe(struct platform_device *pdev)
smi->gpio_sda = pdata->gpio_sda; smi->gpio_sda = pdata->gpio_sda;
smi->gpio_sck = pdata->gpio_sck; smi->gpio_sck = pdata->gpio_sck;
smi->clk_delay = 10;
smi->cmd_read = 0xa9;
smi->cmd_write = 0xa8;
smi->ops = &rtl8366rb_smi_ops; smi->ops = &rtl8366rb_smi_ops;
smi->cpu_port = RTL8366RB_PORT_NUM_CPU; smi->cpu_port = RTL8366RB_PORT_NUM_CPU;
smi->num_ports = RTL8366RB_NUM_PORTS; smi->num_ports = RTL8366RB_NUM_PORTS;

View file

@ -1127,6 +1127,9 @@ static int __devinit rtl8366s_probe(struct platform_device *pdev)
smi->gpio_sda = pdata->gpio_sda; smi->gpio_sda = pdata->gpio_sda;
smi->gpio_sck = pdata->gpio_sck; smi->gpio_sck = pdata->gpio_sck;
smi->clk_delay = 10;
smi->cmd_read = 0xa9;
smi->cmd_write = 0xa8;
smi->ops = &rtl8366s_smi_ops; smi->ops = &rtl8366s_smi_ops;
smi->cpu_port = RTL8366S_PORT_NUM_CPU; smi->cpu_port = RTL8366S_PORT_NUM_CPU;
smi->num_ports = RTL8366S_NUM_PORTS; smi->num_ports = RTL8366S_NUM_PORTS;