Exemplo n.º 1
0
static rt_err_t icodec_configure(struct rt_audio_device *audio,struct rt_audio_caps *caps)
{
    rt_err_t result = RT_EOK;
    struct imxcodec *icodec = (struct imxcodec *)audio->parent.user_data;

    switch (caps->main_type)
    {
    case AUDIO_TYPE_MIXER:
    {
        switch (caps->sub_type)
        {
        case AUDIO_MIXER_VOLUME:
        {
            WM8960_SetVolume(&icodec->codecHandle, kWM8960_ModuleDAC,
                             caps->udata.value);
        }
        break;
        default:
        {
            result = -RT_ERROR;
        }
        break;
        }
    }
    break;
    case AUDIO_TYPE_OUTPUT:
    {
        switch (caps->sub_type)
        {
        case AUDIO_DSP_PARAM:
        {

        } break;
        case AUDIO_DSP_SAMPLERATE:
        {
            int rate = caps->udata.value;

            icodec->format.sampleRate_Hz = rate;
            SAI_TxSetFormat(icodec->sai, &icodec->format, icodec->format.masterClockHz, icodec->format.masterClockHz);
        }
        break;
        default:
        {
            result = -RT_ERROR;
        }
        break;
        }
    }
    break;
    default:
        result = -RT_ERROR;
        break;
    }

    return result;
}
Exemplo n.º 2
0
void Volume_Set(Uint8 Volume)
{
  Uint8 Channel;

  // Ramp volume if needed
  for(Channel = 0; Channel <= 5; Channel++)
  {
    WM8960_SetVolume(Channel,Volume);
  }
}