1*ce6d99a0SSimon Glass /* SPDX-License-Identifier: GPL-2.0+ */ 2*ce6d99a0SSimon Glass /* 3*ce6d99a0SSimon Glass * Copyright 2018 Google LLC 4*ce6d99a0SSimon Glass * Written by Simon Glass <sjg@chromium.org> 5*ce6d99a0SSimon Glass */ 6*ce6d99a0SSimon Glass 7*ce6d99a0SSimon Glass #ifndef __AUDIO_CODEC_H__ 8*ce6d99a0SSimon Glass #define __AUDIO_CODEC_H__ 9*ce6d99a0SSimon Glass 10*ce6d99a0SSimon Glass /* 11*ce6d99a0SSimon Glass * An audio codec turns digital data into sound with various parameters to 12*ce6d99a0SSimon Glass * control its operation. 13*ce6d99a0SSimon Glass */ 14*ce6d99a0SSimon Glass 15*ce6d99a0SSimon Glass /* Operations for sound */ 16*ce6d99a0SSimon Glass struct audio_codec_ops { 17*ce6d99a0SSimon Glass /** 18*ce6d99a0SSimon Glass * set_params() - Set audio codec parameters 19*ce6d99a0SSimon Glass * 20*ce6d99a0SSimon Glass * @dev: Sound device 21*ce6d99a0SSimon Glass * @inteface: Interface number to use on codec 22*ce6d99a0SSimon Glass * @rate: Sampling rate in Hz 23*ce6d99a0SSimon Glass * @mclk_freq: Codec clock frequency in Hz 24*ce6d99a0SSimon Glass * @bits_per_sample: Must be 16 or 24 25*ce6d99a0SSimon Glass * @channels: Number of channels to use (1=mono, 2=stereo) 26*ce6d99a0SSimon Glass * @return 0 if OK, -ve on error 27*ce6d99a0SSimon Glass */ 28*ce6d99a0SSimon Glass int (*set_params)(struct udevice *dev, int interface, int rate, 29*ce6d99a0SSimon Glass int mclk_freq, int bits_per_sample, uint channels); 30*ce6d99a0SSimon Glass }; 31*ce6d99a0SSimon Glass 32*ce6d99a0SSimon Glass #define audio_codec_get_ops(dev) ((struct audio_codec_ops *)(dev)->driver->ops) 33*ce6d99a0SSimon Glass 34*ce6d99a0SSimon Glass /** 35*ce6d99a0SSimon Glass * audio_codec_set_params() - Set audio codec parameters 36*ce6d99a0SSimon Glass * 37*ce6d99a0SSimon Glass * @dev: Sound device 38*ce6d99a0SSimon Glass * @inteface: Interface number to use on codec 39*ce6d99a0SSimon Glass * @rate: Sampling rate in Hz 40*ce6d99a0SSimon Glass * @mclk_freq: Codec clock frequency in Hz 41*ce6d99a0SSimon Glass * @bits_per_sample: Must be 16 or 24 42*ce6d99a0SSimon Glass * @channels: Number of channels to use (1=mono, 2=stereo) 43*ce6d99a0SSimon Glass * @return 0 if OK, -ve on error 44*ce6d99a0SSimon Glass */ 45*ce6d99a0SSimon Glass int audio_codec_set_params(struct udevice *dev, int interface, int rate, 46*ce6d99a0SSimon Glass int mclk_freq, int bits_per_sample, uint channels); 47*ce6d99a0SSimon Glass 48*ce6d99a0SSimon Glass #endif /* __AUDIO_CODEC_H__ */ 49