1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-24 06:57:10 +02:00

[ar71xx] use platform data to setup the MAC_CFG register in the spi_vsc7385 driver

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16780 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg 2009-07-11 14:59:31 +00:00
parent 23e2296ede
commit 3f82f4f4f2
3 changed files with 24 additions and 7 deletions

View File

@ -169,6 +169,11 @@ static void ap83_vsc7385_reset(void)
static struct vsc7385_platform_data ap83_vsc7385_data = {
.reset = ap83_vsc7385_reset,
.ucode_name = "vsc7385_ucode_ap83.bin",
.mac_cfg = {
.tx_ipg = 6,
.bit2 = 0,
.clk_sel = 3,
},
};
static struct spi_board_info ap83_spi_info[] = {

View File

@ -63,10 +63,11 @@
#define VSC73XX_MAC_CFG_VLAN_DBLAWR (1 << 15)
#define VSC73XX_MAC_CFG_VLAN_AWR (1 << 14)
#define VSC73XX_MAC_CFG_100_BASE_T (1 << 13)
#define VSC73XX_MAC_CFG_TX_IPG(x) ((x & 0x1f) << 6)
#define VSC73XX_MAC_CFG_TX_IPG(x) (((x) & 0x1f) << 6)
#define VSC73XX_MAC_CFG_MAC_RX_RST (1 << 5)
#define VSC73XX_MAC_CFG_MAC_TX_RST (1 << 4)
#define VSC73XX_MAC_CFG_CLK_SEL(x) ((x & 0x3) << 0)
#define VSC73XX_MAC_CFG_BIT2 (1 << 2)
#define VSC73XX_MAC_CFG_CLK_SEL(x) ((x) & 0x3)
/* ADVPORTM register bits */
#define VSC73XX_ADVPORTM_IFG_PPM (1 << 7)
@ -145,12 +146,10 @@
VSC73XX_MAC_CFG_MAC_RX_RST | \
VSC73XX_MAC_CFG_MAC_TX_RST)
#define VSC7385_MAC_CFG_INIT (VSC73XX_MAC_CFG_TX_EN | \
#define VSC73XX_MAC_CFG_INIT (VSC73XX_MAC_CFG_TX_EN | \
VSC73XX_MAC_CFG_FDX | \
VSC73XX_MAC_CFG_GIGE | \
VSC73XX_MAC_CFG_RX_EN | \
VSC73XX_MAC_CFG_TX_IPG(6) | \
4)
VSC73XX_MAC_CFG_RX_EN)
#define VSC73XX_RESET_DELAY 100
@ -438,6 +437,8 @@ static int vsc7385_upload_ucode(struct vsc7385 *vsc)
static int vsc7385_setup(struct vsc7385 *vsc)
{
struct vsc7385_platform_data *pdata = vsc->pdata;
u32 t;
int err;
err = vsc7385_write_verify(vsc, VSC73XX_BLOCK_SYSTEM, 0,
@ -461,8 +462,14 @@ static int vsc7385_setup(struct vsc7385 *vsc)
if (err)
goto err;
t = VSC73XX_MAC_CFG_INIT;
t |= VSC73XX_MAC_CFG_TX_IPG(pdata->mac_cfg.tx_ipg);
t |= VSC73XX_MAC_CFG_CLK_SEL(pdata->mac_cfg.clk_sel);
if (pdata->mac_cfg.bit2)
t |= VSC73XX_MAC_CFG_BIT2;
err = vsc7385_write(vsc, VSC73XX_BLOCK_MAC, VSC73XX_SUBBLOCK_PORT_MAC,
VSC73XX_MAC_CFG, VSC7385_MAC_CFG_INIT);
VSC73XX_MAC_CFG, t);
if (err)
goto err;

View File

@ -11,4 +11,9 @@
struct vsc7385_platform_data {
void (* reset)(void);
char *ucode_name;
struct {
u32 tx_ipg:5;
u32 bit2:1;
u32 clk_sel:3;
} mac_cfg;
};