On Tue, Jan 19, 2021 at 03:36:09PM +0000, Russell King wrote: > Add support for backplane link mode, which is, according to discussions > with NXP earlier in the year, is a mode where the OS (Linux) is able to > manage the PCS and Serdes itself.
Indeed, DPMACs in TYPE_BACKPLANE can have both their PCS and SerDes managed by Linux (since the firmware is not touching these). That being said, DPMACs in TYPE_PHY (the type that is already supported in dpaa2-mac) can also have their PCS managed by Linux (no interraction from the firmware's part with the PCS, just the SerDes). All in all, this patch is not needed for this particular usecase, where the switch between 1000Base-X and SGMII is done by just a minor reconfiguration in the PCS, without the need for SerDes changes. Also, with just the changes from this patch, a interface connected to a DPMAC in TYPE_BACKPLANE is not even creating a phylink instance. It's mainly because of this check from dpaa2-eth: if (dpaa2_eth_is_type_phy(priv)) { err = dpaa2_mac_connect(mac); I would suggest just dropping this patch. Ioana > > This commit prepares the ground work for allowing 1G fiber connections > to be used with DPAA2 on the SolidRun CEX7 platforms. > > Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk> > --- > drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c > b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c > index 3ddfb40eb5e4..ccaf7e35abeb 100644 > --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c > +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c > @@ -315,8 +315,9 @@ int dpaa2_mac_connect(struct dpaa2_mac *mac) > goto err_put_node; > } > > - if (mac->attr.link_type == DPMAC_LINK_TYPE_PHY && > - mac->attr.eth_if != DPMAC_ETH_IF_RGMII) { > + if ((mac->attr.link_type == DPMAC_LINK_TYPE_PHY && > + mac->attr.eth_if != DPMAC_ETH_IF_RGMII) || > + mac->attr.link_type == DPMAC_LINK_TYPE_BACKPLANE) { > err = dpaa2_pcs_create(mac, dpmac_node, mac->attr.id); > if (err) > goto err_put_node; > -- > 2.20.1 >