mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-16 08:13:17 +00:00
a77bf70978
The i2s code is in fact Samsung-specific, but there might be other implementation. Move this code into its own file. This makes it slightly more obviously how to adjust the code to support another SoC, when someone takes this task on. Also drop non-FDT support, since it isn't used on Exynos 5. Tested-by: Che-Liang Chiou <clchiou@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org>
37 lines
760 B
C
37 lines
760 B
C
/*
|
|
* 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;
|
|
}
|
|
}
|
|
}
|