diff options
Diffstat (limited to 'roms/u-boot/drivers/sound/sound.c')
-rw-r--r-- | roms/u-boot/drivers/sound/sound.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/roms/u-boot/drivers/sound/sound.c b/roms/u-boot/drivers/sound/sound.c new file mode 100644 index 00000000..9dda2dba --- /dev/null +++ b/roms/u-boot/drivers/sound/sound.c @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * R. Chandrasekar <rcsekar@samsung.com> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <sound.h> + +void sound_create_square_wave(unsigned short *data, int size, uint32_t freq) +{ + const int sample = 48000; + const unsigned short amplitude = 16000; /* between 1 and 32767 */ + const int period = freq ? sample / freq : 0; + const int half = period / 2; + + assert(freq); + + /* Make sure we don't overflow our buffer */ + if (size % 2) + size--; + + while (size) { + int i; + for (i = 0; size && i < half; i++) { + size -= 2; + *data++ = amplitude; + *data++ = amplitude; + } + for (i = 0; size && i < period - half; i++) { + size -= 2; + *data++ = -amplitude; + *data++ = -amplitude; + } + } +} |