allwinner question: New CLR4(sc->phy_ctrl, OTG_PHY_CFG, OTG_PHY_ROUTE_OTG) for phyno !=0 vs. CLR4(sc, 0, OTG_PHY_CFG, OTG_PHY_ROUTE_OTG) before. . .
Mark Millard
markmi at dsl-only.net
Mon Sep 18 20:30:58 UTC 2017
It probably just my ignorance of the code's intent
but for A64 it used to be that phyno ==1 had code
that did CLR4 for phyno==0 (hard coded):
if (sc->phy_type == AWUSBPHY_TYPE_A64) {
CLR4(sc, phyno, PMU_UNK_H3, PMU_UNK_H3_CLR);
/* EHCI0 and OTG share a PHY */
if (phyno == 0)
SET4(sc, 0, OTG_PHY_CFG, OTG_PHY_ROUTE_OTG);
else if (phyno == 1)
CLR4(sc, 0, OTG_PHY_CFG, OTG_PHY_ROUTE_OTG);
}
So: that last CLR4 manipulated phyno==0 as far as I can tell,
no matter what the passed-in phyno was.
In the new code there seems to be no hook for phyno==1
to manipulate phyno==0 similarly:
if (sc->phy_conf->phy0_route == true) {
if (phyno == 0)
SET4(sc->phy_ctrl, OTG_PHY_CFG, OTG_PHY_ROUTE_OTG);
else
CLR4(sc->phy_ctrl, OTG_PHY_CFG, OTG_PHY_ROUTE_OTG);
}
That CLR4 seems to be manipulating phyno==1 instead and
seems to have no means of doing otherwise.
Was the old code wrong?
===
Mark Millard
markmi at dsl-only.net
More information about the freebsd-arm
mailing list