On Tue, Mar 27, 2018 at 12:31:44PM -0400, Murali Karicheri wrote: > Introduce rgmii link status to handle link state events for 2u > cpsw hardware on K2G. > > Signed-off-by: Murali Karicheri <m-karicheri2@xxxxxx> > --- > drivers/net/ethernet/ti/netcp_ethss.c | 27 +++++++++++++++++++++++---- > 1 file changed, 23 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/ti/netcp_ethss.c b/drivers/net/ethernet/ti/netcp_ethss.c > index ab9d369..078a1b8 100644 > --- a/drivers/net/ethernet/ti/netcp_ethss.c > +++ b/drivers/net/ethernet/ti/netcp_ethss.c > @@ -552,6 +552,7 @@ struct gbe_ss_regs { > struct gbe_ss_regs_ofs { > u16 id_ver; > u16 control; > + u16 rgmii_status; /* 2U */ > }; > > struct gbe_switch_regs { > @@ -2120,23 +2121,39 @@ static bool gbe_phy_link_status(struct gbe_slave *slave) > return !slave->phy || slave->phy->link; > } > > +#define RGMII_REG_STATUS_LINK BIT(0) > + > +static void netcp_2u_rgmii_get_port_link(struct gbe_priv *gbe_dev, bool *status) > +{ > + u32 val = 0; > + > + val = readl(GBE_REG_ADDR(gbe_dev, ss_regs, rgmii_status)); > + *status = false; > + if ((val & RGMII_REG_STATUS_LINK) != 0) > + *status = true; *status = !!(val & RGMII_REG_STATUS_LINK); > +} > + > static void netcp_ethss_update_link_state(struct gbe_priv *gbe_dev, > struct gbe_slave *slave, > struct net_device *ndev) > { > - int sp = slave->slave_num; > - int phy_link_state, sgmii_link_state = 1, link_state; > + bool sw_link_state = true, phy_link_state; > + int sp = slave->slave_num, link_state; > > if (!slave->open) > return; > > if (!SLAVE_LINK_IS_XGMII(slave)) { > - sgmii_link_state = > + if (SLAVE_LINK_IS_RGMII(slave)) > + netcp_2u_rgmii_get_port_link(gbe_dev, > + &sw_link_state); > + else > + sw_link_state = > netcp_sgmii_get_port_link(SGMII_BASE(gbe_dev, sp), sp); This would be more readable as if (SLAVE_LINK_IS_RGMII(slave)) netcp_2u_rgmii_get_port_link(gbe_dev, &sw_link_state); if (SLAVE_LINK_IS_SGMII(slave)) sw_link_state = netcp_sgmii_get_port_link( SGMII_BASE(gbe_dev, sp), sp); Andrew -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html