Lines Matching defs:mux
325 imxccm_clk_mux_wait(struct imx6ccm_softc *sc, struct imx6_clk_mux *mux)
327 KASSERT(mux->busy_reg == 0);
328 KASSERT(mux->busy_mask == 0);
331 if (mux->base == IMX6_CLK_REG_CCM_ANALOG)
336 while (bus_space_read_4(sc->sc_iot, ioh, mux->busy_reg) & mux->busy_mask)
346 struct imx6_clk_mux *mux = &iclk->clk.mux;
352 for (sel = 0; sel < mux->nparents; sel++)
353 if (strcmp(pname, mux->parents[sel]) == 0)
356 if (sel == mux->nparents)
360 if (mux->base == IMX6_CLK_REG_CCM_ANALOG)
365 uint32_t v = bus_space_read_4(sc->sc_iot, ioh, mux->reg);
366 v &= ~mux->mask;
367 v |= __SHIFTIN(sel, mux->mask);
369 bus_space_write_4(sc->sc_iot, ioh, mux->reg, v);
373 if (mux->type == IMX6_CLK_MUX_BUSY)
374 imxccm_clk_mux_wait(sc, mux);
382 struct imx6_clk_mux *mux = &iclk->clk.mux;
387 if (mux->base == IMX6_CLK_REG_CCM_ANALOG)
392 uint32_t v = bus_space_read_4(sc->sc_iot, ioh, mux->reg);
393 u_int sel = __SHIFTOUT(v, mux->mask);
395 KASSERTMSG(sel < mux->nparents, "mux %s sel %d nparents %d",
396 iclk->base.name, sel, mux->nparents);
398 iclk->parent = mux->parents[sel];