Home | History | Annotate | Download | only in sunxi

Lines Matching defs:fractional

43 	struct sunxi_ccu_fractional *fractional = &clk->u.fractional;
48 if (!fractional->enable)
51 val = CCU_READ(sc, fractional->reg);
53 val |= fractional->enable;
55 val &= ~fractional->enable;
56 CCU_WRITE(sc, fractional->reg, val);
65 struct sunxi_ccu_fractional *fractional = &clk->u.fractional;
81 val = CCU_READ(sc, fractional->reg);
83 if (fractional->prediv != 0) {
84 rate = rate / (__SHIFTOUT(val, fractional->prediv) + 1);
85 } else if (fractional->prediv_val > 0) {
86 rate = rate / fractional->prediv_val;
89 if (fractional->enable && !(val & fractional->enable))
92 if ((val & fractional->div_en) == 0) {
93 int sel = __SHIFTOUT(val, fractional->frac_sel);
94 return fractional->frac[sel];
96 m = __SHIFTOUT(val, fractional->m);
98 if (fractional->flags & SUNXI_CCU_FRACTIONAL_PLUSONE)
108 struct sunxi_ccu_fractional *fractional = &clk->u.fractional;
125 val = CCU_READ(sc, fractional->reg);
127 if (fractional->prediv != 0) {
128 if (fractional->prediv_val > 0) {
129 val &= ~fractional->prediv;
130 val |= __SHIFTIN(fractional->prediv_val - 1,
131 fractional->prediv);
133 parent_rate = parent_rate / (__SHIFTOUT(val, fractional->prediv) + 1);
134 } else if (fractional->prediv_val > 0) {
135 parent_rate = parent_rate / fractional->prediv_val;
138 for (i = 0; i < __arraycount(fractional->frac); i++) {
139 if (fractional->frac[i] == new_rate) {
140 val &= ~fractional->prediv;
141 val &= ~fractional->div_en;
142 val &= ~fractional->frac_sel;
143 val |= __SHIFTIN(i, fractional->frac_sel);
144 if (fractional->flags & SUNXI_CCU_FRACTIONAL_SET_ENABLE)
145 val |= fractional->enable;
146 CCU_WRITE(sc, fractional->reg, val);
150 val |= fractional->div_en;
155 for (m = fractional->m_min; m <= fractional->m_max; m++) {
170 if (fractional->flags & SUNXI_CCU_FRACTIONAL_PLUSONE)
173 val &= ~fractional->m;
174 val |= __SHIFTIN(best_m, fractional->m);
175 if (fractional->flags & SUNXI_CCU_FRACTIONAL_SET_ENABLE)
176 val |= fractional->enable;
177 CCU_WRITE(sc, fractional->reg, val);
187 struct sunxi_ccu_fractional *fractional = &clk->u.fractional;
204 val = CCU_READ(sc, fractional->reg);
206 if (fractional->prediv_val > 0) {
207 parent_rate = parent_rate / fractional->prediv_val;
208 } else if (fractional->prediv != 0) {
209 val = CCU_READ(sc, fractional->reg);
210 parent_rate = parent_rate / (__SHIFTOUT(val, fractional->prediv) + 1);
213 for (i = 0; i < __arraycount(fractional->frac); i++) {
214 if (fractional->frac[i] == try_rate) {
222 for (m = fractional->m_min; m <= fractional->m_max; m++) {
240 struct sunxi_ccu_fractional *fractional = &clk->u.fractional;
244 return fractional->parent;