| /* SPDX-License-Identifier: GPL-2.0+ */ |
| /* |
| * Copyright 2018 Google LLC |
| * Written by Simon Glass <sjg@chromium.org> |
| */ |
| |
| #ifndef __AUDIO_CODEC_H__ |
| #define __AUDIO_CODEC_H__ |
| |
| #include <linux/types.h> |
| |
| struct udevice; |
| |
| /* |
| * An audio codec turns digital data into sound with various parameters to |
| * control its operation. |
| */ |
| |
| /* Operations for sound */ |
| struct audio_codec_ops { |
| /** |
| * set_params() - Set audio codec parameters |
| * |
| * @dev: Sound device |
| * @inteface: Interface number to use on codec |
| * @rate: Sampling rate in Hz |
| * @mclk_freq: Codec clock frequency in Hz |
| * @bits_per_sample: Must be 16 or 24 |
| * @channels: Number of channels to use (1=mono, 2=stereo) |
| * @return 0 if OK, -ve on error |
| */ |
| int (*set_params)(struct udevice *dev, int interface, int rate, |
| int mclk_freq, int bits_per_sample, uint channels); |
| }; |
| |
| #define audio_codec_get_ops(dev) ((struct audio_codec_ops *)(dev)->driver->ops) |
| |
| /** |
| * audio_codec_set_params() - Set audio codec parameters |
| * |
| * @dev: Sound device |
| * @inteface: Interface number to use on codec |
| * @rate: Sampling rate in Hz |
| * @mclk_freq: Codec clock frequency in Hz |
| * @bits_per_sample: Must be 16 or 24 |
| * @channels: Number of channels to use (1=mono, 2=stereo) |
| * Return: 0 if OK, -ve on error |
| */ |
| int audio_codec_set_params(struct udevice *dev, int interface, int rate, |
| int mclk_freq, int bits_per_sample, uint channels); |
| |
| #endif /* __AUDIO_CODEC_H__ */ |