Загрузка данных


static int sgtl5000_set_property(const struct device *dev, audio_property_t property,
			       audio_channel_t channel, audio_property_value_t val)
{
    int ret = -1;
    uint16_t reg_val;
    uint16_t i2s_pwr = SGTL5000_I2S_IN_POWERUP;

    switch (property) {
        case AUDIO_PROPERTY_OUTPUT_VOLUME:
            /* Linear volume (0-100%) to SGTL5000 hw steps*/
            /*0x3C (0dB, max) to 0xF0 (-90dB, min) */
            if (val.vol == 0) {
                reg_val = (0xFC << 8) | 0xFC; /* (Mute) */
            } else {
                uint8_t steps = (uint8_t)(0x3C + ((100 - val.vol) * (0xF0 - 0x3C)) / 100);
                reg_val = (steps << 8) | steps;
            }
            ret = sgtl5000_write_reg(dev, SGTL5000_CHIP_DAC_VOL, reg_val);

        case AUDIO_PROPERTY_OUTPUT_MUTE:
            ret = sgtl5000_update_reg(dev, SGTL5000_CHIP_ANA_CTRL, SGTL5000_HP_MUTE, val.mute ? SGTL5000_HP_MUTE : 0);
            /*
             * During 'digital mute' do not mute DAC
             * because LINE_IN would be muted aswell. We want to mute
             * only I2S block - this can be done by powering it off
             */
            ret = sgtl5000_update_reg(dev, SGTL5000_CHIP_DIG_POWER,i2s_pwr, val.mute ? 0 : i2s_pwr);

        default:
            break;
    }
    return ret;
}

надо вставить установку AUDIO_PROPERTY_INPUT_VOLUME,AUDIO_PROPERTY_INPUT_MUTE. Комментарии к коду на английском языке