Date: Mon, 18 Sep 2017 13:30:54 -0700 From: Mark Millard <markmi@dsl-only.net> To: Emmanuel Vadot <manu@FreeBSD.org>, freebsd-arm <freebsd-arm@freebsd.org> Subject: 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. . . Message-ID: <BD75F42B-AA93-4BFC-8989-ABA110287673@dsl-only.net>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BD75F42B-AA93-4BFC-8989-ABA110287673>