Commit 5fab12b3 authored by Omar Gabella's avatar Omar Gabella

If CLB_BASE force first calibration steps

parent 3d9fc616
......@@ -14,7 +14,12 @@ static int wr_init(struct pp_instance *ppi, unsigned char *pkt, int plen)
wrp->wrModeOn = 0;
wrp->parentWrConfig = NON_WR;
wrp->parentWrModeOn = 0;
#ifdef BROADCAST_BASE
/* If CLB_BASE force first calibration steps */
wrp->calibrated = WR_DEFAULT_PHY_CALIBRATION_REQUIRED;
#else
wrp->calibrated = !WR_DEFAULT_PHY_CALIBRATION_REQUIRED;
#endif // BROADCAST_BASE
#ifdef CONFIG_ABSCAL
/* absolute calibration only exists in arch-wrpc, so far */
......
......@@ -40,8 +40,11 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
msg_issue_wrsig(ppi, CALIBRATE);
#endif
wrp->wrPortState = WR_PORT_CALIBRATION_0;
#ifndef BROADCAST_BASE
/* If CLB_BASE force first calibration steps */
if (wrp->calibrated)
wrp->wrPortState = WR_PORT_CALIBRATION_2;
#endif // BROADCAST_BASE
}
pp_diag(ppi, ext, 1, "%s: substate %i\n", __func__,
......
......@@ -104,6 +104,14 @@ struct wr_dsport {
UInteger32 ctr_wr_link_on_1;
UInteger32 ctr_wr_link_on_2;
UInteger32 ctr_wr_sync_tai;
UInteger32 ctr_wr_sync_nsec;
UInteger32 ctr_wr_sync_phase;
UInteger32 ctr_wr_wait_offset_stable_0;
UInteger32 ctr_wr_wait_offset_stable_1;
UInteger32 ctr_wr_wait_offset_stable_2;
UInteger32 ctr_wr_wait_offset_stable_3;
UInteger32 ctr_wr_track_phase;
#endif // BROADCAST_BASE && BC_EXTRA_MON
};
......
......@@ -630,6 +630,10 @@ int wr_servo_update(struct pp_instance *ppi)
switch (s->state) {
case WR_SYNC_TAI:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_sync_tai++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->adjust_counters(ts_offset.secs, 0);
s->flags |= WR_FLAG_WAIT_HW;
/*
......@@ -641,12 +645,22 @@ int wr_servo_update(struct pp_instance *ppi)
break;
case WR_SYNC_NSEC:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_sync_nsec++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->adjust_counters(0, ts_offset_ticks);
s->flags |= WR_FLAG_WAIT_HW;
s->state = WR_SYNC_PHASE;
break;
case WR_SYNC_PHASE:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_sync_phase++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
pp_diag(ppi, servo, 2, "oldsetp %i, offset %i:%04i\n",
s->cur_setpoint, ts_offset_ticks,
ts_offset_picos);
......@@ -671,23 +685,44 @@ int wr_servo_update(struct pp_instance *ppi)
break;
case WR_WAIT_OFFSET_STABLE:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_0++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
/* ts_to_picos() below returns phase alone */
remaining_offset = abs(ts_offset_picos);
if(remaining_offset < WR_SERVO_OFFSET_STABILITY_THRESHOLD) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->enable_timing_output(ppi, 1);
s->delta_ms_prev = s->delta_ms;
s->state = WR_TRACK_PHASE;
} else {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
s->missed_iters++;
}
if (s->missed_iters >= 10) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_3++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
s->missed_iters = 0;
s->state = WR_SYNC_PHASE;
}
break;
case WR_TRACK_PHASE:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_track_phase++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
s->skew = s->delta_ms - s->delta_ms_prev;
#ifdef BROADCAST
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment