Lines Matching refs:mux
56 for (p = priv->data->mux; p->id != UNIPHIER_CLK_ID_END; p++) { in uniphier_clk_get_mux_data()
67 const struct uniphier_clk_mux_data *mux; in uniphier_clk_get_rate() local
71 mux = uniphier_clk_get_mux_data(priv, clk->id); in uniphier_clk_get_rate()
72 if (!mux) in uniphier_clk_get_rate()
75 if (!mux->nr_muxs) /* fixed-rate */ in uniphier_clk_get_rate()
76 return mux->rates[0]; in uniphier_clk_get_rate()
78 val = readl(priv->base + mux->reg); in uniphier_clk_get_rate()
80 for (i = 0; i < mux->nr_muxs; i++) in uniphier_clk_get_rate()
81 if ((mux->masks[i] & val) == mux->vals[i]) in uniphier_clk_get_rate()
82 return mux->rates[i]; in uniphier_clk_get_rate()
90 const struct uniphier_clk_mux_data *mux; in uniphier_clk_set_rate() local
95 mux = uniphier_clk_get_mux_data(priv, clk->id); in uniphier_clk_set_rate()
96 if (!mux) in uniphier_clk_set_rate()
99 if (!mux->nr_muxs) /* fixed-rate */ in uniphier_clk_set_rate()
100 return mux->rates[0]; in uniphier_clk_set_rate()
103 for (i = 0; i < mux->nr_muxs; i++) { in uniphier_clk_set_rate()
104 if (mux->rates[i] > best_rate && mux->rates[i] <= rate) { in uniphier_clk_set_rate()
105 best_rate = mux->rates[i]; in uniphier_clk_set_rate()
113 val = readl(priv->base + mux->reg); in uniphier_clk_set_rate()
114 val &= ~mux->masks[best_rate_id]; in uniphier_clk_set_rate()
115 val |= mux->vals[best_rate_id]; in uniphier_clk_set_rate()
116 writel(val, priv->base + mux->reg); in uniphier_clk_set_rate()