diff options
Diffstat (limited to 'include/sound/soc.h')
-rw-r--r-- | include/sound/soc.h | 27 |
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; | |||
238 | struct snd_soc_ac97_ops; | 238 | struct snd_soc_ac97_ops; |
239 | struct snd_soc_jack; | 239 | struct snd_soc_jack; |
240 | struct snd_soc_jack_pin; | 240 | struct snd_soc_jack_pin; |
241 | struct 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 | ||
258 | enum snd_soc_compress_type { | ||
259 | SND_SOC_NO_COMPRESSION | ||
260 | }; | ||
261 | |||
257 | int snd_soc_register_platform(struct device *dev, | 262 | int snd_soc_register_platform(struct device *dev, |
258 | struct snd_soc_platform_driver *platform_drv); | 263 | struct snd_soc_platform_driver *platform_drv); |
259 | void snd_soc_unregister_platform(struct device *dev); | 264 | void snd_soc_unregister_platform(struct device *dev); |
@@ -265,6 +270,13 @@ int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, int reg); | |||
265 | int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec, | 270 | int 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); |
273 | int snd_soc_cache_sync(struct snd_soc_codec *codec); | ||
274 | int snd_soc_cache_init(struct snd_soc_codec *codec); | ||
275 | int snd_soc_cache_exit(struct snd_soc_codec *codec); | ||
276 | int snd_soc_cache_write(struct snd_soc_codec *codec, | ||
277 | unsigned int reg, unsigned int value); | ||
278 | int 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 */ |
270 | int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots); | 282 | int 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 */ | ||
437 | struct 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 */ |
425 | struct snd_soc_codec { | 449 | struct 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 *, |