+#else
+ if (ktime_equal(ref->ktime, ns_to_ktime(0))) {
+ ref->ktime = ktime_now;
+ ref->ts = ts;
+ }
+ {
+ u64 cantime_frame; // TODO: 32bit enough?
+ u16 cantime_lsw_frame;
+ s16 cantime_adj;
+
+ cantime_frame = div_u64(ktime_to_ns(ktime_sub(ktime_now, ref->ktime)), priv->cantime2ns_mul) + ref->ts;
+ //cantime_frame = ((ktime_to_ns(ktime_sub(ktime_now, ref->ktime)) * priv->ns2cantime_mul) >> priv->ns2cantime_shr) + ref->ts;
+
+ cantime_lsw_frame = cantime_frame & 0xffff;
+ cantime_adj = ts - cantime_lsw_frame;
+ cantime_frame += cantime_adj;
+
+ ktime_frame = ktime_add_ns(ref->ktime, ((u64)(cantime_frame - ref->ts) * priv->cantime2ns_mul) >> priv->cantime2ns_shr);
+
+ //*tmdiffns = (s32)(ktime_to_ns(ktime_sub(ktime_now, ktime_frame)) & 0xFFFFFFFF);
+ *tmdiffns = (s32)cantime_adj * 50;
+
+ //ref->ktime = ktime_frame;
+ //ref->ts = ts;
+
+ /* adjust reference */
+ //ref->ktime = ktime_sub_ns(ref->ktime, ((s32)cantime_adj * (s32)priv->cantime2ns_mul) >> (priv->cantime2ns_shr + 7));
+ }
+#endif
+ return ktime_frame;