diff options
Diffstat (limited to 'include/sound/soc.h')
| -rw-r--r-- | include/sound/soc.h | 100 |
1 files changed, 32 insertions, 68 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h index d22cb0a06feb..1f741cb24f33 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #ifndef __LINUX_SND_SOC_H | 13 | #ifndef __LINUX_SND_SOC_H |
| 14 | #define __LINUX_SND_SOC_H | 14 | #define __LINUX_SND_SOC_H |
| 15 | 15 | ||
| 16 | #include <linux/of.h> | ||
| 16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
| 17 | #include <linux/types.h> | 18 | #include <linux/types.h> |
| 18 | #include <linux/notifier.h> | 19 | #include <linux/notifier.h> |
| @@ -330,7 +331,6 @@ struct soc_enum; | |||
| 330 | struct snd_soc_jack; | 331 | struct snd_soc_jack; |
| 331 | struct snd_soc_jack_zone; | 332 | struct snd_soc_jack_zone; |
| 332 | struct snd_soc_jack_pin; | 333 | struct snd_soc_jack_pin; |
| 333 | struct snd_soc_cache_ops; | ||
| 334 | #include <sound/soc-dapm.h> | 334 | #include <sound/soc-dapm.h> |
| 335 | #include <sound/soc-dpcm.h> | 335 | #include <sound/soc-dpcm.h> |
| 336 | 336 | ||
| @@ -348,10 +348,6 @@ enum snd_soc_control_type { | |||
| 348 | SND_SOC_REGMAP, | 348 | SND_SOC_REGMAP, |
| 349 | }; | 349 | }; |
| 350 | 350 | ||
| 351 | enum snd_soc_compress_type { | ||
| 352 | SND_SOC_FLAT_COMPRESSION = 1, | ||
| 353 | }; | ||
| 354 | |||
| 355 | enum snd_soc_pcm_subclass { | 351 | enum snd_soc_pcm_subclass { |
| 356 | SND_SOC_PCM_CLASS_PCM = 0, | 352 | SND_SOC_PCM_CLASS_PCM = 0, |
| 357 | SND_SOC_PCM_CLASS_BE = 1, | 353 | SND_SOC_PCM_CLASS_BE = 1, |
| @@ -369,6 +365,7 @@ int snd_soc_codec_set_pll(struct snd_soc_codec *codec, int pll_id, int source, | |||
| 369 | 365 | ||
| 370 | int snd_soc_register_card(struct snd_soc_card *card); | 366 | int snd_soc_register_card(struct snd_soc_card *card); |
| 371 | int snd_soc_unregister_card(struct snd_soc_card *card); | 367 | int snd_soc_unregister_card(struct snd_soc_card *card); |
| 368 | int devm_snd_soc_register_card(struct device *dev, struct snd_soc_card *card); | ||
| 372 | int snd_soc_suspend(struct device *dev); | 369 | int snd_soc_suspend(struct device *dev); |
| 373 | int snd_soc_resume(struct device *dev); | 370 | int snd_soc_resume(struct device *dev); |
| 374 | int snd_soc_poweroff(struct device *dev); | 371 | int snd_soc_poweroff(struct device *dev); |
| @@ -386,6 +383,9 @@ void snd_soc_unregister_codec(struct device *dev); | |||
| 386 | int snd_soc_register_component(struct device *dev, | 383 | int snd_soc_register_component(struct device *dev, |
| 387 | const struct snd_soc_component_driver *cmpnt_drv, | 384 | const struct snd_soc_component_driver *cmpnt_drv, |
| 388 | struct snd_soc_dai_driver *dai_drv, int num_dai); | 385 | struct snd_soc_dai_driver *dai_drv, int num_dai); |
| 386 | int devm_snd_soc_register_component(struct device *dev, | ||
| 387 | const struct snd_soc_component_driver *cmpnt_drv, | ||
| 388 | struct snd_soc_dai_driver *dai_drv, int num_dai); | ||
| 389 | void snd_soc_unregister_component(struct device *dev); | 389 | void snd_soc_unregister_component(struct device *dev); |
| 390 | int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, | 390 | int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, |
| 391 | unsigned int reg); | 391 | unsigned int reg); |
| @@ -403,12 +403,6 @@ int snd_soc_cache_write(struct snd_soc_codec *codec, | |||
| 403 | unsigned int reg, unsigned int value); | 403 | unsigned int reg, unsigned int value); |
| 404 | int snd_soc_cache_read(struct snd_soc_codec *codec, | 404 | int snd_soc_cache_read(struct snd_soc_codec *codec, |
| 405 | unsigned int reg, unsigned int *value); | 405 | unsigned int reg, unsigned int *value); |
| 406 | int snd_soc_default_volatile_register(struct snd_soc_codec *codec, | ||
| 407 | unsigned int reg); | ||
| 408 | int snd_soc_default_readable_register(struct snd_soc_codec *codec, | ||
| 409 | unsigned int reg); | ||
| 410 | int snd_soc_default_writable_register(struct snd_soc_codec *codec, | ||
| 411 | unsigned int reg); | ||
| 412 | int snd_soc_platform_read(struct snd_soc_platform *platform, | 406 | int snd_soc_platform_read(struct snd_soc_platform *platform, |
| 413 | unsigned int reg); | 407 | unsigned int reg); |
| 414 | int snd_soc_platform_write(struct snd_soc_platform *platform, | 408 | int snd_soc_platform_write(struct snd_soc_platform *platform, |
| @@ -542,22 +536,6 @@ int snd_soc_put_strobe(struct snd_kcontrol *kcontrol, | |||
| 542 | struct snd_ctl_elem_value *ucontrol); | 536 | struct snd_ctl_elem_value *ucontrol); |
| 543 | 537 | ||
| 544 | /** | 538 | /** |
| 545 | * struct snd_soc_reg_access - Describes whether a given register is | ||
| 546 | * readable, writable or volatile. | ||
| 547 | * | ||
| 548 | * @reg: the register number | ||
| 549 | * @read: whether this register is readable | ||
| 550 | * @write: whether this register is writable | ||
| 551 | * @vol: whether this register is volatile | ||
| 552 | */ | ||
| 553 | struct snd_soc_reg_access { | ||
| 554 | u16 reg; | ||
| 555 | u16 read; | ||
| 556 | u16 write; | ||
| 557 | u16 vol; | ||
| 558 | }; | ||
| 559 | |||
| 560 | /** | ||
| 561 | * struct snd_soc_jack_pin - Describes a pin to update based on jack detection | 539 | * struct snd_soc_jack_pin - Describes a pin to update based on jack detection |
| 562 | * | 540 | * |
| 563 | * @pin: name of the pin to update | 541 | * @pin: name of the pin to update |
| @@ -657,17 +635,26 @@ struct snd_soc_compr_ops { | |||
| 657 | int (*trigger)(struct snd_compr_stream *); | 635 | int (*trigger)(struct snd_compr_stream *); |
| 658 | }; | 636 | }; |
| 659 | 637 | ||
| 660 | /* SoC cache ops */ | 638 | /* component interface */ |
| 661 | struct snd_soc_cache_ops { | 639 | struct snd_soc_component_driver { |
| 640 | const char *name; | ||
| 641 | |||
| 642 | /* DT */ | ||
| 643 | int (*of_xlate_dai_name)(struct snd_soc_component *component, | ||
| 644 | struct of_phandle_args *args, | ||
| 645 | const char **dai_name); | ||
| 646 | }; | ||
| 647 | |||
| 648 | struct snd_soc_component { | ||
| 662 | const char *name; | 649 | const char *name; |
| 663 | enum snd_soc_compress_type id; | 650 | int id; |
| 664 | int (*init)(struct snd_soc_codec *codec); | 651 | struct device *dev; |
| 665 | int (*exit)(struct snd_soc_codec *codec); | 652 | struct list_head list; |
| 666 | int (*read)(struct snd_soc_codec *codec, unsigned int reg, | 653 | |
| 667 | unsigned int *value); | 654 | struct snd_soc_dai_driver *dai_drv; |
| 668 | int (*write)(struct snd_soc_codec *codec, unsigned int reg, | 655 | int num_dai; |
| 669 | unsigned int value); | 656 | |
| 670 | int (*sync)(struct snd_soc_codec *codec); | 657 | const struct snd_soc_component_driver *driver; |
| 671 | }; | 658 | }; |
| 672 | 659 | ||
| 673 | /* SoC Audio Codec device */ | 660 | /* SoC Audio Codec device */ |
| @@ -683,8 +670,6 @@ struct snd_soc_codec { | |||
| 683 | struct list_head list; | 670 | struct list_head list; |
| 684 | struct list_head card_list; | 671 | struct list_head card_list; |
| 685 | int num_dai; | 672 | int num_dai; |
| 686 | enum snd_soc_compress_type compress_type; | ||
| 687 | size_t reg_size; /* reg_cache_size * reg_word_size */ | ||
| 688 | int (*volatile_register)(struct snd_soc_codec *, unsigned int); | 673 | int (*volatile_register)(struct snd_soc_codec *, unsigned int); |
| 689 | int (*readable_register)(struct snd_soc_codec *, unsigned int); | 674 | int (*readable_register)(struct snd_soc_codec *, unsigned int); |
| 690 | int (*writable_register)(struct snd_soc_codec *, unsigned int); | 675 | int (*writable_register)(struct snd_soc_codec *, unsigned int); |
| @@ -708,13 +693,13 @@ struct snd_soc_codec { | |||
| 708 | unsigned int (*hw_read)(struct snd_soc_codec *, unsigned int); | 693 | unsigned int (*hw_read)(struct snd_soc_codec *, unsigned int); |
| 709 | unsigned int (*read)(struct snd_soc_codec *, unsigned int); | 694 | unsigned int (*read)(struct snd_soc_codec *, unsigned int); |
| 710 | int (*write)(struct snd_soc_codec *, unsigned int, unsigned int); | 695 | int (*write)(struct snd_soc_codec *, unsigned int, unsigned int); |
| 711 | int (*bulk_write_raw)(struct snd_soc_codec *, unsigned int, const void *, size_t); | ||
| 712 | void *reg_cache; | 696 | void *reg_cache; |
| 713 | const void *reg_def_copy; | ||
| 714 | const struct snd_soc_cache_ops *cache_ops; | ||
| 715 | struct mutex cache_rw_mutex; | 697 | struct mutex cache_rw_mutex; |
| 716 | int val_bytes; | 698 | int val_bytes; |
| 717 | 699 | ||
| 700 | /* component */ | ||
| 701 | struct snd_soc_component component; | ||
| 702 | |||
| 718 | /* dapm */ | 703 | /* dapm */ |
| 719 | struct snd_soc_dapm_context dapm; | 704 | struct snd_soc_dapm_context dapm; |
| 720 | unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */ | 705 | unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */ |
| @@ -733,6 +718,7 @@ struct snd_soc_codec_driver { | |||
| 733 | int (*remove)(struct snd_soc_codec *); | 718 | int (*remove)(struct snd_soc_codec *); |
| 734 | int (*suspend)(struct snd_soc_codec *); | 719 | int (*suspend)(struct snd_soc_codec *); |
| 735 | int (*resume)(struct snd_soc_codec *); | 720 | int (*resume)(struct snd_soc_codec *); |
| 721 | struct snd_soc_component_driver component_driver; | ||
| 736 | 722 | ||
| 737 | /* Default control and setup, added after probe() is run */ | 723 | /* Default control and setup, added after probe() is run */ |
| 738 | const struct snd_kcontrol_new *controls; | 724 | const struct snd_kcontrol_new *controls; |
| @@ -760,9 +746,6 @@ struct snd_soc_codec_driver { | |||
| 760 | short reg_cache_step; | 746 | short reg_cache_step; |
| 761 | short reg_word_size; | 747 | short reg_word_size; |
| 762 | const void *reg_cache_default; | 748 | const void *reg_cache_default; |
| 763 | short reg_access_size; | ||
| 764 | const struct snd_soc_reg_access *reg_access_default; | ||
| 765 | enum snd_soc_compress_type compress_type; | ||
| 766 | 749 | ||
| 767 | /* codec bias level */ | 750 | /* codec bias level */ |
| 768 | int (*set_bias_level)(struct snd_soc_codec *, | 751 | int (*set_bias_level)(struct snd_soc_codec *, |
| @@ -849,20 +832,6 @@ struct snd_soc_platform { | |||
| 849 | #endif | 832 | #endif |
| 850 | }; | 833 | }; |
| 851 | 834 | ||
| 852 | struct snd_soc_component_driver { | ||
| 853 | const char *name; | ||
| 854 | }; | ||
| 855 | |||
| 856 | struct snd_soc_component { | ||
| 857 | const char *name; | ||
| 858 | int id; | ||
| 859 | int num_dai; | ||
| 860 | struct device *dev; | ||
| 861 | struct list_head list; | ||
| 862 | |||
| 863 | const struct snd_soc_component_driver *driver; | ||
| 864 | }; | ||
| 865 | |||
| 866 | struct snd_soc_dai_link { | 835 | struct snd_soc_dai_link { |
| 867 | /* config - must be set by machine driver */ | 836 | /* config - must be set by machine driver */ |
| 868 | const char *name; /* Codec name */ | 837 | const char *name; /* Codec name */ |
| @@ -944,12 +913,6 @@ struct snd_soc_codec_conf { | |||
| 944 | * associated per device | 913 | * associated per device |
| 945 | */ | 914 | */ |
| 946 | const char *name_prefix; | 915 | const char *name_prefix; |
| 947 | |||
| 948 | /* | ||
| 949 | * set this to the desired compression type if you want to | ||
| 950 | * override the one supplied in codec->driver->compress_type | ||
| 951 | */ | ||
| 952 | enum snd_soc_compress_type compress_type; | ||
| 953 | }; | 916 | }; |
| 954 | 917 | ||
| 955 | struct snd_soc_aux_dev { | 918 | struct snd_soc_aux_dev { |
| @@ -1088,7 +1051,8 @@ struct snd_soc_pcm_runtime { | |||
| 1088 | /* mixer control */ | 1051 | /* mixer control */ |
| 1089 | struct soc_mixer_control { | 1052 | struct soc_mixer_control { |
| 1090 | int min, max, platform_max; | 1053 | int min, max, platform_max; |
| 1091 | unsigned int reg, rreg, shift, rshift; | 1054 | int reg, rreg; |
| 1055 | unsigned int shift, rshift; | ||
| 1092 | unsigned int invert:1; | 1056 | unsigned int invert:1; |
| 1093 | unsigned int autodisable:1; | 1057 | unsigned int autodisable:1; |
| 1094 | }; | 1058 | }; |
| @@ -1121,8 +1085,6 @@ struct soc_enum { | |||
| 1121 | unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg); | 1085 | unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg); |
| 1122 | unsigned int snd_soc_write(struct snd_soc_codec *codec, | 1086 | unsigned int snd_soc_write(struct snd_soc_codec *codec, |
| 1123 | unsigned int reg, unsigned int val); | 1087 | unsigned int reg, unsigned int val); |
| 1124 | unsigned int snd_soc_bulk_write_raw(struct snd_soc_codec *codec, | ||
| 1125 | unsigned int reg, const void *data, size_t len); | ||
| 1126 | 1088 | ||
| 1127 | /* device driver data */ | 1089 | /* device driver data */ |
| 1128 | 1090 | ||
| @@ -1201,6 +1163,8 @@ int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, | |||
| 1201 | const char *propname); | 1163 | const char *propname); |
| 1202 | unsigned int snd_soc_of_parse_daifmt(struct device_node *np, | 1164 | unsigned int snd_soc_of_parse_daifmt(struct device_node *np, |
| 1203 | const char *prefix); | 1165 | const char *prefix); |
| 1166 | int snd_soc_of_get_dai_name(struct device_node *of_node, | ||
| 1167 | const char **dai_name); | ||
| 1204 | 1168 | ||
| 1205 | #include <sound/soc-dai.h> | 1169 | #include <sound/soc-dai.h> |
| 1206 | 1170 | ||
