mv643xx_eth: remove force_phy_addr field
Currently, there are two different fields in the mv643xx_eth_platform_data struct that together describe the PHY address -- one field (phy_addr) has the address of the PHY, but if that address is zero, a second field (force_phy_addr) needs to be set to distinguish the actual address zero from a zero due to not having filled in the PHY address explicitly (which should mean 'use the default PHY address'). If we are a bit smarter about the encoding of the phy_addr field, we can avoid the need for a second field -- this patch does that. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
This commit is contained in:
Родитель
fc0eb9f226
Коммит
ac840605f3
|
@ -25,7 +25,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
|
static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv_sata_platform_data db88f6281_sata_data = {
|
static struct mv_sata_platform_data db88f6281_sata_data = {
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#define RD88F6192_GPIO_USB_VBUS 10
|
#define RD88F6192_GPIO_USB_VBUS 10
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data rd88f6192_ge00_data = {
|
static struct mv643xx_eth_platform_data rd88f6192_ge00_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv_sata_platform_data rd88f6192_sata_data = {
|
static struct mv_sata_platform_data rd88f6192_sata_data = {
|
||||||
|
|
|
@ -69,7 +69,7 @@ static struct platform_device rd88f6281_nand_flash = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data rd88f6281_ge00_data = {
|
static struct mv643xx_eth_platform_data rd88f6281_ge00_data = {
|
||||||
.phy_addr = -1,
|
.phy_addr = MV643XX_ETH_PHY_NONE,
|
||||||
.speed = SPEED_1000,
|
.speed = SPEED_1000,
|
||||||
.duplex = DUPLEX_FULL,
|
.duplex = DUPLEX_FULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -67,7 +67,7 @@ static struct platform_device lb88rc8480_boot_flash = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data lb88rc8480_ge0_data = {
|
static struct mv643xx_eth_platform_data lb88rc8480_ge0_data = {
|
||||||
.phy_addr = 1,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(1),
|
||||||
.mac_addr = { 0x00, 0x50, 0x43, 0x11, 0x22, 0x33 },
|
.mac_addr = { 0x00, 0x50, 0x43, 0x11, 0x22, 0x33 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -19,19 +19,19 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data db78x00_ge00_data = {
|
static struct mv643xx_eth_platform_data db78x00_ge00_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data db78x00_ge01_data = {
|
static struct mv643xx_eth_platform_data db78x00_ge01_data = {
|
||||||
.phy_addr = 9,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(9),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data db78x00_ge10_data = {
|
static struct mv643xx_eth_platform_data db78x00_ge10_data = {
|
||||||
.phy_addr = -1,
|
.phy_addr = MV643XX_ETH_PHY_NONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data db78x00_ge11_data = {
|
static struct mv643xx_eth_platform_data db78x00_ge11_data = {
|
||||||
.phy_addr = -1,
|
.phy_addr = MV643XX_ETH_PHY_NONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv_sata_platform_data db78x00_sata_data = {
|
static struct mv_sata_platform_data db78x00_sata_data = {
|
||||||
|
|
|
@ -285,7 +285,7 @@ subsys_initcall(db88f5281_pci_init);
|
||||||
* Ethernet
|
* Ethernet
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static struct mv643xx_eth_platform_data db88f5281_eth_data = {
|
static struct mv643xx_eth_platform_data db88f5281_eth_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
|
@ -79,7 +79,7 @@ subsys_initcall(dns323_pci_init);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data dns323_eth_data = {
|
static struct mv643xx_eth_platform_data dns323_eth_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
|
|
@ -161,7 +161,7 @@ subsys_initcall(kurobox_pro_pci_init);
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data kurobox_pro_eth_data = {
|
static struct mv643xx_eth_platform_data kurobox_pro_eth_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
|
@ -109,7 +109,7 @@ subsys_initcall(mss2_pci_init);
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data mss2_eth_data = {
|
static struct mv643xx_eth_platform_data mss2_eth_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
* Ethernet
|
* Ethernet
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static struct mv643xx_eth_platform_data mv2120_eth_data = {
|
static struct mv643xx_eth_platform_data mv2120_eth_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv_sata_platform_data mv2120_sata_data = {
|
static struct mv_sata_platform_data mv2120_sata_data = {
|
||||||
|
|
|
@ -88,7 +88,7 @@ static struct orion5x_mpp_mode rd88f5181l_fxo_mpp_modes[] __initdata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = {
|
static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = {
|
||||||
.phy_addr = -1,
|
.phy_addr = MV643XX_ETH_PHY_NONE,
|
||||||
.speed = SPEED_1000,
|
.speed = SPEED_1000,
|
||||||
.duplex = DUPLEX_FULL,
|
.duplex = DUPLEX_FULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -89,7 +89,7 @@ static struct orion5x_mpp_mode rd88f5181l_ge_mpp_modes[] __initdata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = {
|
static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = {
|
||||||
.phy_addr = -1,
|
.phy_addr = MV643XX_ETH_PHY_NONE,
|
||||||
.speed = SPEED_1000,
|
.speed = SPEED_1000,
|
||||||
.duplex = DUPLEX_FULL,
|
.duplex = DUPLEX_FULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -221,7 +221,7 @@ subsys_initcall(rd88f5182_pci_init);
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data rd88f5182_eth_data = {
|
static struct mv643xx_eth_platform_data rd88f5182_eth_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
|
@ -103,8 +103,7 @@ static struct platform_device ts78xx_nor_boot_flash = {
|
||||||
* Ethernet
|
* Ethernet
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static struct mv643xx_eth_platform_data ts78xx_eth_data = {
|
static struct mv643xx_eth_platform_data ts78xx_eth_data = {
|
||||||
.phy_addr = 0,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(0),
|
||||||
.force_phy_addr = 1,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
|
@ -48,7 +48,7 @@ void qnap_tsx09_power_off(void)
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
struct mv643xx_eth_platform_data qnap_tsx09_eth_data = {
|
struct mv643xx_eth_platform_data qnap_tsx09_eth_data = {
|
||||||
.phy_addr = 8,
|
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init qnap_tsx09_parse_hex_nibble(char n)
|
static int __init qnap_tsx09_parse_hex_nibble(char n)
|
||||||
|
|
|
@ -92,7 +92,7 @@ static struct platform_device wnr854t_nor_flash = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data wnr854t_eth_data = {
|
static struct mv643xx_eth_platform_data wnr854t_eth_data = {
|
||||||
.phy_addr = -1,
|
.phy_addr = MV643XX_ETH_PHY_NONE,
|
||||||
.speed = SPEED_1000,
|
.speed = SPEED_1000,
|
||||||
.duplex = DUPLEX_FULL,
|
.duplex = DUPLEX_FULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -100,7 +100,7 @@ static struct platform_device wrt350n_v2_nor_flash = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = {
|
static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = {
|
||||||
.phy_addr = -1,
|
.phy_addr = MV643XX_ETH_PHY_NONE,
|
||||||
.speed = SPEED_1000,
|
.speed = SPEED_1000,
|
||||||
.duplex = DUPLEX_FULL,
|
.duplex = DUPLEX_FULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -293,10 +293,8 @@ static int __init mv64x60_eth_device_setup(struct device_node *np, int id,
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
prop = of_get_property(phy, "reg", NULL);
|
prop = of_get_property(phy, "reg", NULL);
|
||||||
if (prop) {
|
if (prop)
|
||||||
pdata.force_phy_addr = 1;
|
pdata.phy_addr = MV643XX_ETH_PHY_ADDR(*prop);
|
||||||
pdata.phy_addr = *prop;
|
|
||||||
}
|
|
||||||
|
|
||||||
of_node_put(phy);
|
of_node_put(phy);
|
||||||
|
|
||||||
|
|
|
@ -2412,10 +2412,10 @@ static void set_params(struct mv643xx_eth_private *mp,
|
||||||
else
|
else
|
||||||
uc_addr_get(mp, dev->dev_addr);
|
uc_addr_get(mp, dev->dev_addr);
|
||||||
|
|
||||||
if (pd->phy_addr == -1) {
|
if (pd->phy_addr == MV643XX_ETH_PHY_NONE) {
|
||||||
mp->phy_addr = -1;
|
mp->phy_addr = -1;
|
||||||
} else {
|
} else {
|
||||||
if (pd->force_phy_addr || pd->phy_addr) {
|
if (pd->phy_addr != MV643XX_ETH_PHY_ADDR_DEFAULT) {
|
||||||
mp->phy_addr = pd->phy_addr & 0x3f;
|
mp->phy_addr = pd->phy_addr & 0x3f;
|
||||||
phy_addr_set(mp, mp->phy_addr);
|
phy_addr_set(mp, mp->phy_addr);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -21,6 +21,10 @@ struct mv643xx_eth_shared_platform_data {
|
||||||
unsigned int t_clk;
|
unsigned int t_clk;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define MV643XX_ETH_PHY_ADDR_DEFAULT 0
|
||||||
|
#define MV643XX_ETH_PHY_ADDR(x) (0x80 | (x))
|
||||||
|
#define MV643XX_ETH_PHY_NONE 0xff
|
||||||
|
|
||||||
struct mv643xx_eth_platform_data {
|
struct mv643xx_eth_platform_data {
|
||||||
/*
|
/*
|
||||||
* Pointer back to our parent instance, and our port number.
|
* Pointer back to our parent instance, and our port number.
|
||||||
|
@ -31,7 +35,6 @@ struct mv643xx_eth_platform_data {
|
||||||
/*
|
/*
|
||||||
* Whether a PHY is present, and if yes, at which address.
|
* Whether a PHY is present, and if yes, at which address.
|
||||||
*/
|
*/
|
||||||
int force_phy_addr;
|
|
||||||
int phy_addr;
|
int phy_addr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче