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) ...@@ -14,7 +14,12 @@ static int wr_init(struct pp_instance *ppi, unsigned char *pkt, int plen)
wrp->wrModeOn = 0; wrp->wrModeOn = 0;
wrp->parentWrConfig = NON_WR; wrp->parentWrConfig = NON_WR;
wrp->parentWrModeOn = 0; 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; wrp->calibrated = !WR_DEFAULT_PHY_CALIBRATION_REQUIRED;
#endif // BROADCAST_BASE
#ifdef CONFIG_ABSCAL #ifdef CONFIG_ABSCAL
/* absolute calibration only exists in arch-wrpc, so far */ /* 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) ...@@ -40,8 +40,11 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
msg_issue_wrsig(ppi, CALIBRATE); msg_issue_wrsig(ppi, CALIBRATE);
#endif #endif
wrp->wrPortState = WR_PORT_CALIBRATION_0; wrp->wrPortState = WR_PORT_CALIBRATION_0;
#ifndef BROADCAST_BASE
/* If CLB_BASE force first calibration steps */
if (wrp->calibrated) if (wrp->calibrated)
wrp->wrPortState = WR_PORT_CALIBRATION_2; wrp->wrPortState = WR_PORT_CALIBRATION_2;
#endif // BROADCAST_BASE
} }
pp_diag(ppi, ext, 1, "%s: substate %i\n", __func__, pp_diag(ppi, ext, 1, "%s: substate %i\n", __func__,
......
...@@ -104,6 +104,14 @@ struct wr_dsport { ...@@ -104,6 +104,14 @@ struct wr_dsport {
UInteger32 ctr_wr_link_on_1; UInteger32 ctr_wr_link_on_1;
UInteger32 ctr_wr_link_on_2; 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 #endif // BROADCAST_BASE && BC_EXTRA_MON
}; };
......
...@@ -630,6 +630,10 @@ int wr_servo_update(struct pp_instance *ppi) ...@@ -630,6 +630,10 @@ int wr_servo_update(struct pp_instance *ppi)
switch (s->state) { switch (s->state) {
case WR_SYNC_TAI: 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); wrp->ops->adjust_counters(ts_offset.secs, 0);
s->flags |= WR_FLAG_WAIT_HW; s->flags |= WR_FLAG_WAIT_HW;
/* /*
...@@ -641,12 +645,22 @@ int wr_servo_update(struct pp_instance *ppi) ...@@ -641,12 +645,22 @@ int wr_servo_update(struct pp_instance *ppi)
break; break;
case WR_SYNC_NSEC: 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); wrp->ops->adjust_counters(0, ts_offset_ticks);
s->flags |= WR_FLAG_WAIT_HW; s->flags |= WR_FLAG_WAIT_HW;
s->state = WR_SYNC_PHASE; s->state = WR_SYNC_PHASE;
break; break;
case WR_SYNC_PHASE: 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", pp_diag(ppi, servo, 2, "oldsetp %i, offset %i:%04i\n",
s->cur_setpoint, ts_offset_ticks, s->cur_setpoint, ts_offset_ticks,
ts_offset_picos); ts_offset_picos);
...@@ -671,23 +685,44 @@ int wr_servo_update(struct pp_instance *ppi) ...@@ -671,23 +685,44 @@ int wr_servo_update(struct pp_instance *ppi)
break; break;
case WR_WAIT_OFFSET_STABLE: 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 */ /* ts_to_picos() below returns phase alone */
remaining_offset = abs(ts_offset_picos); remaining_offset = abs(ts_offset_picos);
if(remaining_offset < WR_SERVO_OFFSET_STABILITY_THRESHOLD) { 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); wrp->ops->enable_timing_output(ppi, 1);
s->delta_ms_prev = s->delta_ms; s->delta_ms_prev = s->delta_ms;
s->state = WR_TRACK_PHASE; s->state = WR_TRACK_PHASE;
} else { } 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++; s->missed_iters++;
} }
if (s->missed_iters >= 10) { 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->missed_iters = 0;
s->state = WR_SYNC_PHASE; s->state = WR_SYNC_PHASE;
} }
break; break;
case WR_TRACK_PHASE: 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; s->skew = s->delta_ms - s->delta_ms_prev;
#ifdef BROADCAST #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