},
};
+struct ag71xx_switch_platform_data ar71xx_switch_data;
+
#define AR71XX_PLL_VAL_1000 0x00110000
#define AR71XX_PLL_VAL_100 0x00001099
#define AR71XX_PLL_VAL_10 0x00991099
pdata->speed = SPEED_1000;
pdata->duplex = DUPLEX_FULL;
- pdata->has_ar7240_switch = 1;
+ pdata->switch_data = &ar71xx_switch_data;
}
pdata->has_gbit = 1;
pdata->is_ar724x = 1;
pdata->speed = SPEED_1000;
pdata->duplex = DUPLEX_FULL;
- pdata->has_ar7240_switch = 1;
+ pdata->switch_data = &ar71xx_switch_data;
}
pdata->has_gbit = 1;
extern struct platform_device ar71xx_eth1_device;
void ar71xx_add_device_eth(unsigned int id) __init;
+extern struct ag71xx_switch_platform_data ar71xx_switch_data;
+
extern struct platform_device ar71xx_mdio0_device;
extern struct platform_device ar71xx_mdio1_device;
void ar71xx_add_device_mdio(unsigned int id, u32 phy_mask) __init;
#include <linux/phy.h>
#include <linux/spi/spi.h>
+struct ag71xx_switch_platform_data {
+ int dummy;
+};
+
struct ag71xx_platform_data {
phy_interface_t phy_if_mode;
u32 phy_mask;
u8 is_ar7240:1;
u8 is_ar724x:1;
u8 has_ar8216:1;
- u8 has_ar7240_switch:1;
+
+ struct ag71xx_switch_platform_data *switch_data;
void (*ddr_flush)(void);
void (*set_speed)(int speed);
struct ar7240sw {
struct mii_bus *mii_bus;
+ struct ag71xx_switch_platform_data *swdata;
struct switch_dev swdev;
int num_ports;
bool vlan;
static struct ar7240sw *ar7240_probe(struct ag71xx *ag)
{
+ struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag);
struct mii_bus *mii = ag->mii_bus;
struct ar7240sw *as;
struct switch_dev *swdev;
return NULL;
as->mii_bus = mii;
+ as->swdata = pdata->switch_data;
ctrl = ar7240sw_reg_read(mii, AR7240_REG_MASK_CTRL);
ver = (ctrl >> AR7240_MASK_CTRL_VERSION_S) & AR7240_MASK_CTRL_VERSION_M;
if (ag->phy_dev) {
phy_start(ag->phy_dev);
- } else if (pdata->has_ar7240_switch) {
+ } else if (pdata->switch_data) {
ag71xx_ar7240_start(ag);
} else {
ag->link = 1;
if (ag->phy_dev)
phy_stop(ag->phy_dev);
- else if (pdata->has_ar7240_switch)
- ag71xx_ar7240_stop(ag);
+ else if (pdata->switch_data)
+ ag71xx_ar7240_stop(ag);
spin_lock_irqsave(&ag->lock, flags);
if (ag->link) {
mutex_unlock(&ag->mii_bus->mdio_lock);
}
- if (pdata->has_ar7240_switch)
+ if (pdata->switch_data)
return ag71xx_ar7240_init(ag);
if (pdata->phy_mask)
{
struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag);
- if (pdata->has_ar7240_switch)
+ if (pdata->switch_data)
ag71xx_ar7240_cleanup(ag);
else if (ag->phy_dev)
phy_disconnect(ag->phy_dev);