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; +		} +	} +} | 
