···8888#endif
8989 case CLK_SSP: BF_WR(CLKCTRL_SSP, DIV(div)); break;
9090 case CLK_HBUS:
9191+#if IMX233_SUBTARGET >= 3700
9192 /* make sure to switch to integer divide mode simulteanously */
9293 BF_WR(CLKCTRL_HBUS, DIV_FRAC_EN(0), DIV(div)); break;
9494+#else
9595+ BF_WR(CLKCTRL_HBUS, DIV(div)); break;
9696+#endif
9397 case CLK_XBUS: BF_WR(CLKCTRL_XBUS, DIV(div)); break;
9498 default: return;
9599 }
···111115 case CLK_SSP: return BF_RD(CLKCTRL_SSP, DIV);
112116 case CLK_HBUS:
113117 /* since fractional and integer divider share the same field, clain it is disabled in frac mode */
118118+#if IMX233_SUBTARGET >= 3700
114119 if(BF_RD(CLKCTRL_HBUS, DIV_FRAC_EN))
115120 return 0;
116121 else
122122+#endif
117123 return BF_RD(CLKCTRL_HBUS, DIV);
118124 case CLK_XBUS: return BF_RD(CLKCTRL_XBUS, DIV);
119125 default: return 0;
···143149 /* value 0 is forbidden because we can't simply disabble the divider, it's always
144150 * active but either in integer or fractional mode
145151 * make sure we write both the value and frac_en bit at the same time */
152152+#if IMX233_SUBTARGET >= 3700
146153 BF_WR(CLKCTRL_HBUS, DIV_FRAC_EN(1), DIV(fracdiv));
154154+#else
155155+ BF_WR(CLKCTRL_HBUS, DIV(fracdiv));
156156+#endif
147157 break;
148158 default: break;
149159 }