// SPDX-License-Identifier: Apache-2.0 #pragma once #include #include #include #include struct Device; #ifdef __cplusplus extern "C" { #endif /** * @brief ES8311 codec device configuration. * * The ES8311 is wired as both control (I2C) and audio (I2S) device: the I2C * bus is the device's parent (per i2c-device.yaml), while the I2S controller * is referenced via a devicetree phandle. It operates in dual mode * (speaker output + mic input) on boards such as M5Stack StickS3. */ struct Es8311Config { /** I2C address on the bus (typically 0x18) */ uint8_t address; /** I2S controller device that carries audio data */ struct Device* i2s_device; /** * Extra fixed digital gain multiplier applied by audio_stream on top of the ES8311's * own hardware ADC gain (0..42dB), as an integer percentage (100 = 1.0x / no extra boost). * Small MEMS mic capsules can still sound quiet even near max hardware gain; this is for * boards where 42dB hardware gain alone isn't enough. devicetree has no float property type, * hence the x100 integer encoding. */ uint16_t input_gain_percent; }; #ifdef __cplusplus } #endif