mixer: Defer ioctls to retrieve mixer_ctl information.

In an attempt to speed up mixer_open(), defer ioctls to get mixer
control information.

Before this change, retrieving the information for a single
control could take 0.5s. Eg:

device:/ # time tinymix "SpkrRight WSA PA Gain"
SpkrRight WSA PA Gain: >G_18_DB G_16P5_DB G_15_DB G_13P5_DB G_12_DB G_10P5_DB G_9_DB G_7P5_DB G_6_DB G_4P5_DB G_3_DB G_1P5_DB G_0_DB
    0m00.50s real     0m00.01s user     0m00.47s system

After:
device:/ # time tinymix "SpkrRight WSA PA Gain"
SpkrRight WSA PA Gain: >G_18_DB G_16P5_DB G_15_DB G_13P5_DB G_12_DB G_10P5_DB G_9_DB G_7P5_DB G_6_DB G_4P5_DB G_3_DB G_1P5_DB G_0_DB
    0m00.08s real     0m00.00s user     0m00.06s system

Bug: 67749156
Bug: 64497304
Test: Tinymix is able to pull all of the mixer information.
      Associated CTS test passes every time on our device where it
      previously failed every time.
Change-Id: I4369d8f60171ac01889203902a0646adbd9fcc94
1 file changed