aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound/soc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sound/soc.h')
-rw-r--r--include/sound/soc.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 5d3954774ade..275e41133468 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -238,6 +238,7 @@ struct soc_enum;
238struct snd_soc_ac97_ops; 238struct snd_soc_ac97_ops;
239struct snd_soc_jack; 239struct snd_soc_jack;
240struct snd_soc_jack_pin; 240struct snd_soc_jack_pin;
241struct snd_soc_cache_ops;
241#include <sound/soc-dapm.h> 242#include <sound/soc-dapm.h>
242 243
243#ifdef CONFIG_GPIOLIB 244#ifdef CONFIG_GPIOLIB
@@ -254,6 +255,10 @@ enum snd_soc_control_type {
254 SND_SOC_SPI, 255 SND_SOC_SPI,
255}; 256};
256 257
258enum snd_soc_compress_type {
259 SND_SOC_NO_COMPRESSION
260};
261
257int snd_soc_register_platform(struct device *dev, 262int snd_soc_register_platform(struct device *dev,
258 struct snd_soc_platform_driver *platform_drv); 263 struct snd_soc_platform_driver *platform_drv);
259void snd_soc_unregister_platform(struct device *dev); 264void snd_soc_unregister_platform(struct device *dev);
@@ -265,6 +270,13 @@ int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, int reg);
265int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec, 270int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
266 int addr_bits, int data_bits, 271 int addr_bits, int data_bits,
267 enum snd_soc_control_type control); 272 enum snd_soc_control_type control);
273int snd_soc_cache_sync(struct snd_soc_codec *codec);
274int snd_soc_cache_init(struct snd_soc_codec *codec);
275int snd_soc_cache_exit(struct snd_soc_codec *codec);
276int snd_soc_cache_write(struct snd_soc_codec *codec,
277 unsigned int reg, unsigned int value);
278int snd_soc_cache_read(struct snd_soc_codec *codec,
279 unsigned int reg, unsigned int *value);
268 280
269/* Utility functions to get clock rates from various things */ 281/* Utility functions to get clock rates from various things */
270int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots); 282int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots);
@@ -421,6 +433,18 @@ struct snd_soc_ops {
421 int (*trigger)(struct snd_pcm_substream *, int); 433 int (*trigger)(struct snd_pcm_substream *, int);
422}; 434};
423 435
436/* SoC cache ops */
437struct snd_soc_cache_ops {
438 enum snd_soc_compress_type id;
439 int (*init)(struct snd_soc_codec *codec);
440 int (*exit)(struct snd_soc_codec *codec);
441 int (*read)(struct snd_soc_codec *codec, unsigned int reg,
442 unsigned int *value);
443 int (*write)(struct snd_soc_codec *codec, unsigned int reg,
444 unsigned int value);
445 int (*sync)(struct snd_soc_codec *codec);
446};
447
424/* SoC Audio Codec device */ 448/* SoC Audio Codec device */
425struct snd_soc_codec { 449struct snd_soc_codec {
426 const char *name; 450 const char *name;
@@ -450,6 +474,8 @@ struct snd_soc_codec {
450 hw_write_t hw_write; 474 hw_write_t hw_write;
451 unsigned int (*hw_read)(struct snd_soc_codec *, unsigned int); 475 unsigned int (*hw_read)(struct snd_soc_codec *, unsigned int);
452 void *reg_cache; 476 void *reg_cache;
477 const struct snd_soc_cache_ops *cache_ops;
478 struct mutex cache_rw_mutex;
453 479
454 /* dapm */ 480 /* dapm */
455 struct snd_soc_dapm_context dapm; 481 struct snd_soc_dapm_context dapm;
@@ -482,6 +508,7 @@ struct snd_soc_codec_driver {
482 short reg_cache_step; 508 short reg_cache_step;
483 short reg_word_size; 509 short reg_word_size;
484 const void *reg_cache_default; 510 const void *reg_cache_default;
511 enum snd_soc_compress_type compress_type;
485 512
486 /* codec bias level */ 513 /* codec bias level */
487 int (*set_bias_level)(struct snd_soc_codec *, 514 int (*set_bias_level)(struct snd_soc_codec *,