case CPTS_EV_PUSH:
WRITE_ONCE(cpts->cur_timestamp, lo);
timecounter_read(&cpts->tc);
+ if (cpts->mult_new) {
+ cpts->cc.mult = cpts->mult_new;
+ cpts->mult_new = 0;
+ }
break;
case CPTS_EV_TX:
if (cpts_match_tx_ts(cpts, event)) {
spin_lock_irqsave(&cpts->lock, flags);
- cpts_update_cur_time(cpts, CPTS_EV_PUSH);
+ cpts->mult_new = neg_adj ? mult - diff : mult + diff;
- cpts->cc.mult = neg_adj ? mult - diff : mult + diff;
+ cpts_update_cur_time(cpts, CPTS_EV_PUSH);
spin_unlock_irqrestore(&cpts->lock, flags);