net: dsa: add support for phylink mac_select_pcs()
Add DSA support for the phylink mac_select_pcs() method so DSA drivers can return provide phylink with the appropriate PCS for the PHY interface mode. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
8aba73ef44
Коммит
bde018222c
|
@ -788,6 +788,9 @@ struct dsa_switch_ops {
|
||||||
void (*phylink_validate)(struct dsa_switch *ds, int port,
|
void (*phylink_validate)(struct dsa_switch *ds, int port,
|
||||||
unsigned long *supported,
|
unsigned long *supported,
|
||||||
struct phylink_link_state *state);
|
struct phylink_link_state *state);
|
||||||
|
struct phylink_pcs *(*phylink_mac_select_pcs)(struct dsa_switch *ds,
|
||||||
|
int port,
|
||||||
|
phy_interface_t iface);
|
||||||
int (*phylink_mac_link_state)(struct dsa_switch *ds, int port,
|
int (*phylink_mac_link_state)(struct dsa_switch *ds, int port,
|
||||||
struct phylink_link_state *state);
|
struct phylink_link_state *state);
|
||||||
void (*phylink_mac_config)(struct dsa_switch *ds, int port,
|
void (*phylink_mac_config)(struct dsa_switch *ds, int port,
|
||||||
|
|
|
@ -1053,6 +1053,20 @@ static void dsa_port_phylink_mac_pcs_get_state(struct phylink_config *config,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct phylink_pcs *
|
||||||
|
dsa_port_phylink_mac_select_pcs(struct phylink_config *config,
|
||||||
|
phy_interface_t interface)
|
||||||
|
{
|
||||||
|
struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
|
||||||
|
struct dsa_switch *ds = dp->ds;
|
||||||
|
struct phylink_pcs *pcs = NULL;
|
||||||
|
|
||||||
|
if (ds->ops->phylink_mac_select_pcs)
|
||||||
|
pcs = ds->ops->phylink_mac_select_pcs(ds, dp->index, interface);
|
||||||
|
|
||||||
|
return pcs;
|
||||||
|
}
|
||||||
|
|
||||||
static void dsa_port_phylink_mac_config(struct phylink_config *config,
|
static void dsa_port_phylink_mac_config(struct phylink_config *config,
|
||||||
unsigned int mode,
|
unsigned int mode,
|
||||||
const struct phylink_link_state *state)
|
const struct phylink_link_state *state)
|
||||||
|
@ -1119,6 +1133,7 @@ static void dsa_port_phylink_mac_link_up(struct phylink_config *config,
|
||||||
|
|
||||||
static const struct phylink_mac_ops dsa_port_phylink_mac_ops = {
|
static const struct phylink_mac_ops dsa_port_phylink_mac_ops = {
|
||||||
.validate = dsa_port_phylink_validate,
|
.validate = dsa_port_phylink_validate,
|
||||||
|
.mac_select_pcs = dsa_port_phylink_mac_select_pcs,
|
||||||
.mac_pcs_get_state = dsa_port_phylink_mac_pcs_get_state,
|
.mac_pcs_get_state = dsa_port_phylink_mac_pcs_get_state,
|
||||||
.mac_config = dsa_port_phylink_mac_config,
|
.mac_config = dsa_port_phylink_mac_config,
|
||||||
.mac_an_restart = dsa_port_phylink_mac_an_restart,
|
.mac_an_restart = dsa_port_phylink_mac_an_restart,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче