[roll] Roll fuchsia [audio_core] Revert adjusted clocks to monotonic

When an Adjustable clock's counterpart (i.e. the clock that it chases)
changes from non-MONOTONIC to MONOTONIC, smoothly return the Adjustable
clock to a state of synchronized position, then lock the rate to 0 ppm.

Specifically, avoid the normal PID feedback and instead use a
proportional (linear) factor based on the position error, until source
position error is within a 10 nsec tolerance, then set the rate to
0 ppm and clear any accumulated PID feedback.

This 10-nsec tolerance was chosen because zx::clock rates are limited
to integer values. Thus even with the smallest-possible delta between
clocks (1 ppm), position error can swing by +/-10 nsec in a single
10-msec duration (the norm) between clock tunings.

As shown by the ...MixCountUntilSettled thresholds defined in
mix_stage_clock_unittest.cc, this method converges to the "settled"
error range about 35 times faster than the normal PID-tuning mechanism
used by ClientAdjustable clocks, and approx. three times as fast as
the convergence done by MicroSrc.

fx test -o audio_core_unittests
fx test -o audio-clock-pipeline-test

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/506870
Original-Revision: c46f5ce9d3d4d73097a86b12fdcb70f46f905776
GitOrigin-RevId: 7e9436b40e20a60483bf228a2d0afa354cf910b1
Change-Id: Ia35a9969ff2631e487404316a081656318d19b3c
1 file changed
tree: 8dc72f4f7abc89b8b47c7f56c12dad2ba56f994d
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.