xref: /rk3399_rockchip-uboot/include/sound.h (revision 69ab2873d7dfde4d3bde450cbbcd415ad5a6a883)
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