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 /* 33a77bf709SSimon Glass * Generates square wave sound data for 1 second 34a77bf709SSimon Glass * 35a77bf709SSimon Glass * @param data data buffer pointer 36a77bf709SSimon Glass * @param size size of the buffer 37a77bf709SSimon Glass * @param freq frequency of the wave 38a77bf709SSimon Glass */ 39a77bf709SSimon Glass void sound_create_square_wave(unsigned short *data, int size, uint32_t freq); 40a77bf709SSimon Glass 41a77bf709SSimon 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 56*69ab2873SSugar Zhang struct snd_soc_dai_ops { 57*69ab2873SSugar Zhang int (*hw_params)(struct udevice *dev, unsigned int samplerate, 58*69ab2873SSugar Zhang unsigned int fmt, unsigned int channels); 59*69ab2873SSugar Zhang int (*startup)(struct udevice *dev); 60*69ab2873SSugar Zhang int (*shutdown)(struct udevice *dev); 61*69ab2873SSugar Zhang int (*transfer)(struct udevice *dev, unsigned int *data, 62*69ab2873SSugar Zhang unsigned long data_size); 63*69ab2873SSugar Zhang int (*set_sysclk)(struct udevice *dev, unsigned int freq); 64*69ab2873SSugar Zhang }; 65*69ab2873SSugar Zhang 66511ed5fdSRajeshwari Shinde #endif /* __SOUND__H__ */ 67