Remove dsp_callback because DSP is now library code, not app code.

Yep, nope, not necessary anymore. Just call functions directly.

Change-Id: I21dc35f8d674c2a9c8379b7cebd5613c1f05b5eb
This commit is contained in:
Michael Sevakis 2013-05-23 14:19:06 -04:00
parent b7e0e1a0a3
commit 6e211ab3ac
6 changed files with 21 additions and 81 deletions

View file

@ -722,9 +722,6 @@ void settings_apply_pm_range(void)
void sound_settings_apply(void) void sound_settings_apply(void)
{ {
#if CONFIG_CODEC == SWCODEC
audiohw_swcodec_set_callback(dsp_callback);
#endif
#ifdef AUDIOHW_HAVE_BASS #ifdef AUDIOHW_HAVE_BASS
sound_set(SOUND_BASS, global_settings.bass); sound_set(SOUND_BASS, global_settings.bass);
#endif #endif

View file

@ -21,56 +21,51 @@
#include "config.h" #include "config.h"
#include "system.h" #include "system.h"
#include "sound.h" #include "sound.h"
#ifdef HAVE_SW_TONE_CONTROLS
#include "tone_controls.h"
#endif
#include "channel_mode.h"
#include "dsp_misc.h" #include "dsp_misc.h"
/* Linking audio hardware calls to SWCODEC DSP emulation */ /** Functions exported by audiohw.h but implemented in DSP **/
static audiohw_swcodec_cb_type callback = NULL;
void audiohw_swcodec_set_callback(audiohw_swcodec_cb_type func)
{
callback = func;
}
/** Functions exported by audiohw.h **/
void audiohw_set_channel(int value) void audiohw_set_channel(int value)
{ {
callback(DSP_CALLBACK_SET_CHANNEL_CONFIG, value); channel_mode_set_config(value);
} }
void audiohw_set_stereo_width(int value) void audiohw_set_stereo_width(int value)
{ {
callback(DSP_CALLBACK_SET_STEREO_WIDTH, value); channel_mode_custom_set_width(value);
} }
#ifdef HAVE_SW_TONE_CONTROLS #ifdef HAVE_SW_TONE_CONTROLS
void audiohw_set_bass(int value) void audiohw_set_bass(int value)
{ {
callback(DSP_CALLBACK_SET_BASS, value*10); tone_set_bass(value*10);
} }
void audiohw_set_treble(int value) void audiohw_set_treble(int value)
{ {
callback(DSP_CALLBACK_SET_TREBLE, value*10); tone_set_treble(value*10);
} }
#endif /* HAVE_SW_TONE_CONTROLS */ #endif /* HAVE_SW_TONE_CONTROLS */
#ifndef AUDIOHW_HAVE_PRESCALER #ifndef AUDIOHW_HAVE_PRESCALER
void audiohw_set_prescaler(int value) void audiohw_set_prescaler(int value)
{ {
callback(DSP_CALLBACK_SET_PRESCALE, value); tone_set_prescale(value);
} }
#endif /* AUDIOHW_HAVE_PRESCALER */ #endif /* AUDIOHW_HAVE_PRESCALER */
#ifdef HAVE_PITCHCONTROL #ifdef HAVE_PITCHCONTROL
void audiohw_set_pitch(int32_t value) void audiohw_set_pitch(int32_t value)
{ {
callback(DSP_CALLBACK_SET_PITCH, value); dsp_set_pitch(value);
} }
int32_t audiohw_get_pitch(void) int32_t audiohw_get_pitch(void)
{ {
return callback(DSP_CALLBACK_GET_PITCH, 0); return dsp_get_pitch();
} }
#endif /* HAVE_PITCHCONTROL */ #endif /* HAVE_PITCHCONTROL */

View file

@ -529,11 +529,6 @@ void audiohw_set_stereo_width(int val);
void audiohw_enable_speaker(bool on); void audiohw_enable_speaker(bool on);
#endif /* HAVE_SPEAKER */ #endif /* HAVE_SPEAKER */
#if CONFIG_CODEC == SWCODEC
typedef int (*audiohw_swcodec_cb_type)(int msg, intptr_t param);
void audiohw_swcodec_set_callback(audiohw_swcodec_cb_type func);
#endif /* CONFIG_CODEC == SWCODEC */
/** /**
* Some setting are the same for every codec and can be defined here. * Some setting are the same for every codec and can be defined here.
*/ */

View file

@ -116,7 +116,7 @@ static void dsp_pitch_update(struct dsp_config *dsp)
fp_div(pitch_ratio, PITCH_SPEED_100, 16)); fp_div(pitch_ratio, PITCH_SPEED_100, 16));
} }
static void dsp_set_pitch(int32_t percent) void dsp_set_pitch(int32_t percent)
{ {
if (percent <= 0) if (percent <= 0)
percent = PITCH_SPEED_100; percent = PITCH_SPEED_100;
@ -128,50 +128,12 @@ static void dsp_set_pitch(int32_t percent)
dsp_pitch_update(dsp_get_config(CODEC_IDX_AUDIO)); dsp_pitch_update(dsp_get_config(CODEC_IDX_AUDIO));
} }
#endif /* HAVE_PITCHCONTROL */
int32_t dsp_get_pitch(void)
/** Firmware callback interface **/
/* Hook back from firmware/ part of audio, which can't/shouldn't call apps/
* code directly. */
int dsp_callback(int msg, intptr_t param)
{ {
int retval = 0; return pitch_ratio;
}
switch (msg)
{
#ifdef HAVE_SW_TONE_CONTROLS
case DSP_CALLBACK_SET_PRESCALE:
tone_set_prescale(param);
break;
case DSP_CALLBACK_SET_BASS:
tone_set_bass(param);
break;
case DSP_CALLBACK_SET_TREBLE:
tone_set_treble(param);
break;
#endif /* HAVE_SW_TONE_CONTROLS */
case DSP_CALLBACK_SET_CHANNEL_CONFIG:
channel_mode_set_config(param);
break;
case DSP_CALLBACK_SET_STEREO_WIDTH:
channel_mode_custom_set_width(param);
break;
#ifdef HAVE_PITCHCONTROL
case DSP_CALLBACK_SET_PITCH:
dsp_set_pitch(param);
break;
case DSP_CALLBACK_GET_PITCH:
retval = pitch_ratio;
break;
#endif /* HAVE_PITCHCONTROL */ #endif /* HAVE_PITCHCONTROL */
default:
break;
}
return retval;
}
static void INIT_ATTR misc_dsp_init(struct dsp_config *dsp, static void INIT_ATTR misc_dsp_init(struct dsp_config *dsp,
enum dsp_ids dsp_id) enum dsp_ids dsp_id)

View file

@ -54,18 +54,9 @@ struct dsp_replay_gains
void dsp_replaygain_set_settings(const struct replaygain_settings *settings); void dsp_replaygain_set_settings(const struct replaygain_settings *settings);
/* Callback for firmware layers to interface */ #ifdef HAVE_PITCHCONTROL
enum void dsp_set_pitch(int32_t pitch);
{ int32_t dsp_get_pitch(void);
DSP_CALLBACK_SET_PRESCALE = 0, #endif /* HAVE_PITCHCONTROL */
DSP_CALLBACK_SET_BASS,
DSP_CALLBACK_SET_TREBLE,
DSP_CALLBACK_SET_CHANNEL_CONFIG,
DSP_CALLBACK_SET_STEREO_WIDTH,
DSP_CALLBACK_SET_PITCH,
DSP_CALLBACK_GET_PITCH,
};
int dsp_callback(int msg, intptr_t param);
#endif /* DSP_MISC_H */ #endif /* DSP_MISC_H */

View file

@ -387,7 +387,7 @@ static void perform_config(void)
} else if (!strncmp(name, "offset=", 7)) { } else if (!strncmp(name, "offset=", 7)) {
ci.id3->offset = atoi(val); ci.id3->offset = atoi(val);
} else if (!strncmp(name, "rate=", 5)) { } else if (!strncmp(name, "rate=", 5)) {
dsp_callback(DSP_CALLBACK_SET_PITCH, atof(val) * PITCH_SPEED_100); dsp_set_pitch(atof(val) * PITCH_SPEED_100);
} else if (!strncmp(name, "seek=", 5)) { } else if (!strncmp(name, "seek=", 5)) {
codec_action = CODEC_ACTION_SEEK_TIME; codec_action = CODEC_ACTION_SEEK_TIME;
codec_action_param = atoi(val); codec_action_param = atoi(val);