1511ed5fdSRajeshwari Shinde /* 2511ed5fdSRajeshwari Shinde * Copyright (C) 2012 Samsung Electronics 3511ed5fdSRajeshwari Shinde * R. Chandrasekar < rcsekar@samsung.com> 4511ed5fdSRajeshwari Shinde * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6511ed5fdSRajeshwari Shinde */ 7511ed5fdSRajeshwari Shinde 8511ed5fdSRajeshwari Shinde #ifndef __SOUND_H__ 9511ed5fdSRajeshwari Shinde #define __SOUND_H__ 10511ed5fdSRajeshwari Shinde 11511ed5fdSRajeshwari Shinde /* sound codec enum */ 12511ed5fdSRajeshwari Shinde enum en_sound_codec { 13511ed5fdSRajeshwari Shinde CODEC_WM_8994, 14511ed5fdSRajeshwari Shinde CODEC_WM_8995, 1514d2dfc3SRajeshwari Shinde CODEC_MAX_98095, 16511ed5fdSRajeshwari Shinde CODEC_MAX 17511ed5fdSRajeshwari Shinde }; 18511ed5fdSRajeshwari Shinde 19511ed5fdSRajeshwari Shinde /* sound codec enum */ 20511ed5fdSRajeshwari Shinde enum sound_compat { 21511ed5fdSRajeshwari Shinde AUDIO_COMPAT_SPI, 22511ed5fdSRajeshwari Shinde AUDIO_COMPAT_I2C, 23511ed5fdSRajeshwari Shinde }; 24511ed5fdSRajeshwari Shinde 25511ed5fdSRajeshwari Shinde /* Codec information structure to store the info from device tree */ 26511ed5fdSRajeshwari Shinde struct sound_codec_info { 27511ed5fdSRajeshwari Shinde int i2c_bus; 28511ed5fdSRajeshwari Shinde int i2c_dev_addr; 29511ed5fdSRajeshwari Shinde enum en_sound_codec codec_type; 30511ed5fdSRajeshwari Shinde }; 31511ed5fdSRajeshwari Shinde 32511ed5fdSRajeshwari Shinde /* 33*a77bf709SSimon Glass * Generates square wave sound data for 1 second 34*a77bf709SSimon Glass * 35*a77bf709SSimon Glass * @param data data buffer pointer 36*a77bf709SSimon Glass * @param size size of the buffer 37*a77bf709SSimon Glass * @param freq frequency of the wave 38*a77bf709SSimon Glass */ 39*a77bf709SSimon Glass void sound_create_square_wave(unsigned short *data, int size, uint32_t freq); 40*a77bf709SSimon Glass 41*a77bf709SSimon Glass /* 42511ed5fdSRajeshwari Shinde * Initialises audio sub system 43f482310cSRajeshwari Shinde * @param blob Pointer of device tree node or NULL if none. 44511ed5fdSRajeshwari Shinde * @return int value 0 for success, -1 for error 45511ed5fdSRajeshwari Shinde */ 46f482310cSRajeshwari Shinde int sound_init(const void *blob); 47511ed5fdSRajeshwari Shinde 48511ed5fdSRajeshwari Shinde /* 49511ed5fdSRajeshwari Shinde * plays the pcm data buffer in pcm_data.h through i2s1 to make the 50511ed5fdSRajeshwari Shinde * sine wave sound 51511ed5fdSRajeshwari Shinde * 52511ed5fdSRajeshwari Shinde * @return int 0 for success, -1 for error 53511ed5fdSRajeshwari Shinde */ 54511ed5fdSRajeshwari Shinde int sound_play(uint32_t msec, uint32_t frequency); 55511ed5fdSRajeshwari Shinde 56511ed5fdSRajeshwari Shinde #endif /* __SOUND__H__ */ 57