MCPcopy Create free account
hub / github.com/F-Stack/f-stack / awusb3phy_phy_enable

Function awusb3phy_phy_enable

freebsd/arm/allwinner/aw_usb3phy.c:111–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109#define WR4(res, o, v) bus_write_4(res, (o), (v))
110
111static int
112awusb3phy_phy_enable(struct phynode *phynode, bool enable)
113{
114 struct awusb3phy_softc *sc;
115 device_t dev;
116 uint32_t val;
117 int error = 0;
118
119 dev = phynode_get_device(phynode);
120 sc = device_get_softc(dev);
121
122 device_printf(dev, "%s: called\n", __func__);
123
124 if (enable) {
125 val = RD4(sc->res, USB3PHY_PHY_EXTERNAL_CONTROL);
126 device_printf(dev, "EXTERNAL_CONTROL: %x\n", val);
127 val |= PEC_EXTERN_VBUS;
128 val |= PEC_SSC_EN;
129 val |= PEC_REF_SSP_EN;
130 device_printf(dev, "EXTERNAL_CONTROL: %x\n", val);
131 WR4(sc->res, USB3PHY_PHY_EXTERNAL_CONTROL, val);
132
133 val = RD4(sc->res, USB3PHY_PIPE_CLOCK_CONTROL);
134 device_printf(dev, "PIPE_CONTROL: %x\n", val);
135 val |= PCC_PIPE_CLK_OPEN;
136 device_printf(dev, "PIPE_CONTROL: %x\n", val);
137 WR4(sc->res, USB3PHY_PIPE_CLOCK_CONTROL, val);
138
139 val = RD4(sc->res, USB3PHY_APP);
140 device_printf(dev, "APP: %x\n", val);
141 val |= APP_FORCE_VBUS;
142 device_printf(dev, "APP: %x\n", val);
143 WR4(sc->res, USB3PHY_APP, val);
144
145 WR4(sc->res, USB3PHY_PHY_TUNE_LOW, PTL_MAGIC);
146
147 val = RD4(sc->res, USB3PHY_PHY_TUNE_HIGH);
148 device_printf(dev, "PHY_TUNE_HIGH: %x\n", val);
149 val |= PTH_TX_BOOST_LVL;
150 val |= PTH_LOS_BIAS;
151 val &= ~PTH_TX_SWING_FULL;
152 val |= __SHIFTIN(0x55, PTH_TX_SWING_FULL);
153 val &= ~PTH_TX_DEEMPH_6DB;
154 val |= __SHIFTIN(0x20, PTH_TX_DEEMPH_6DB);
155 val &= ~PTH_TX_DEEMPH_3P5DB;
156 val |= __SHIFTIN(0x15, PTH_TX_DEEMPH_3P5DB);
157 device_printf(dev, "PHY_TUNE_HIGH: %x\n", val);
158 WR4(sc->res, USB3PHY_PHY_TUNE_HIGH, val);
159
160 if (sc->reg)
161 error = regulator_enable(sc->reg);
162 } else {
163 if (sc->reg)
164 error = regulator_disable(sc->reg);
165 }
166
167 if (error != 0) {
168 device_printf(dev,

Callers

nothing calls this directly

Calls 4

device_get_softcFunction · 0.85
device_printfFunction · 0.85
RD4Function · 0.50
WR4Function · 0.50

Tested by

no test coverage detected