| // SPDX-License-Identifier: GPL-2.0+ | |
| /* | |
| * Copyright (C) 2012 Samsung Electronics | |
| * R. Chandrasekar <[email protected]> | |
| */ | |
| #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; | |
| } | |
| } | |
| } |