diff options
author | Simon Glass <sjg@chromium.org> | 2018-12-10 10:37:50 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2018-12-13 16:37:09 -0700 |
commit | e221cdcf44c80a6de78fd9285c5325db231ed20c (patch) | |
tree | 138387d1a785612a1cef0c36c8f7209c2f235df4 | |
parent | bc58184ec5013a6ec5bf75a314c08bd7ae24d60b (diff) | |
download | u-boot-e221cdcf44c80a6de78fd9285c5325db231ed20c.zip u-boot-e221cdcf44c80a6de78fd9285c5325db231ed20c.tar.gz u-boot-e221cdcf44c80a6de78fd9285c5325db231ed20c.tar.bz2 |
dm: sandbox: Allow selection of sample rate and channels
At present these parameters are hard-coded in the sdl interface code.
Allow them to be specified by the driver instead.
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | arch/sandbox/cpu/sdl.c | 10 | ||||
-rw-r--r-- | arch/sandbox/include/asm/sdl.h | 6 | ||||
-rw-r--r-- | drivers/sound/sandbox.c | 2 |
3 files changed, 8 insertions, 10 deletions
diff --git a/arch/sandbox/cpu/sdl.c b/arch/sandbox/cpu/sdl.c index 47b7065..f668f53 100644 --- a/arch/sandbox/cpu/sdl.c +++ b/arch/sandbox/cpu/sdl.c @@ -9,10 +9,6 @@ #include <SDL/SDL.h> #include <asm/state.h> -enum { - SAMPLE_RATE = 22050, -}; - /** * struct buf_info - a data buffer holding audio data * @@ -285,7 +281,7 @@ void sandbox_sdl_fill_audio(void *udata, Uint8 *stream, int len) } } -int sandbox_sdl_sound_init(void) +int sandbox_sdl_sound_init(int rate, int channels) { SDL_AudioSpec wanted; int i; @@ -297,9 +293,9 @@ int sandbox_sdl_sound_init(void) return 0; /* Set the audio format */ - wanted.freq = SAMPLE_RATE; + wanted.freq = rate; wanted.format = AUDIO_S16; - wanted.channels = 1; /* 1 = mono, 2 = stereo */ + wanted.channels = channels; wanted.samples = 1024; /* Good low-latency value for callback */ wanted.callback = sandbox_sdl_fill_audio; wanted.userdata = NULL; diff --git a/arch/sandbox/include/asm/sdl.h b/arch/sandbox/include/asm/sdl.h index 2799a8b..1027b59 100644 --- a/arch/sandbox/include/asm/sdl.h +++ b/arch/sandbox/include/asm/sdl.h @@ -71,9 +71,11 @@ int sandbox_sdl_sound_stop(void); /** * sandbox_sdl_sound_init() - set up the sound system * + * @rate: Sample rate to use + * @channels: Number of channels to use (1=mono, 2=stereo) * @return 0 if OK, -ENODEV if no sound is available */ -int sandbox_sdl_sound_init(void); +int sandbox_sdl_sound_init(int rate, int channels); #else static inline int sandbox_sdl_init_display(int width, int height, @@ -112,7 +114,7 @@ static inline int sandbox_sdl_sound_stop(void) return -ENODEV; } -static inline int sandbox_sdl_sound_init(void) +int sandbox_sdl_sound_init(int rate, int channels) { return -ENODEV; } diff --git a/drivers/sound/sandbox.c b/drivers/sound/sandbox.c index 089d830..b0b07f3 100644 --- a/drivers/sound/sandbox.c +++ b/drivers/sound/sandbox.c @@ -102,7 +102,7 @@ static int sandbox_i2s_probe(struct udevice *dev) uc_priv->id = 1; /* Ignore any error here - we'll just have no sound */ - sandbox_sdl_sound_init(); + sandbox_sdl_sound_init(uc_priv->samplingrate, uc_priv->channels); return 0; } |