sound_card_init: add boot time calibration flow for max98390

The max98390 boot time calibration flow inlcudes the following steps:
1. Limits the speaker volume to protect the speakers.
2. Triggers the boot time calibration while playing some zeros to the
   speakers.
3. Reads the result of calibration and decides whether to use it or not.
4. Applies a good calibration value and removes the speaker output
   limitation.

BUG=b:149437381
TEST=/sbin/initctl start sound_card_init SOUND_CARD_ID=sofcmlmax98390d

Cq-Depend: chromium:2230538
Change-Id: I5ae5560070b86c1d2a7f440401db3f9bf1cda2b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/adhd/+/2166866
Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
Tested-by: Judy Hsiao <judyhsiao@chromium.org>
Commit-Queue: Judy Hsiao <judyhsiao@chromium.org>
12 files changed