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:
parent
43196813d7
commit
87fb92ee03
4 changed files with 17 additions and 9 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue