diff options
author | Mark Brown <broonie@kernel.org> | 2016-05-13 09:27:16 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-05-13 09:27:16 -0400 |
commit | 515511a7920c69aebf7f5fef0cb8e1df6767f34c (patch) | |
tree | 2cd9ac2853bb11aa2eeb766bb18c0b1846d8d941 /include/sound | |
parent | 180bc41ad11b9a7ec5b420fbcef6570163d09204 (diff) | |
parent | 8f658815da156a9239b98b34e5ba1d3db71a2f6e (diff) |
Merge remote-tracking branch 'asoc/topic/hdmi' into asoc-next
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/hdmi-codec.h | 100 | ||||
-rw-r--r-- | include/sound/pcm_iec958.h | 2 |
2 files changed, 102 insertions, 0 deletions
diff --git a/include/sound/hdmi-codec.h b/include/sound/hdmi-codec.h new file mode 100644 index 000000000000..fc3a481ad91e --- /dev/null +++ b/include/sound/hdmi-codec.h | |||
@@ -0,0 +1,100 @@ | |||
1 | /* | ||
2 | * hdmi-codec.h - HDMI Codec driver API | ||
3 | * | ||
4 | * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com | ||
5 | * | ||
6 | * Author: Jyri Sarha <jsarha@ti.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or | ||
9 | * modify it under the terms of the GNU General Public License | ||
10 | * version 2 as published by the Free Software Foundation. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, but | ||
13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | */ | ||
17 | |||
18 | #ifndef __HDMI_CODEC_H__ | ||
19 | #define __HDMI_CODEC_H__ | ||
20 | |||
21 | #include <linux/hdmi.h> | ||
22 | #include <drm/drm_edid.h> | ||
23 | #include <sound/asoundef.h> | ||
24 | #include <uapi/sound/asound.h> | ||
25 | |||
26 | /* | ||
27 | * Protocol between ASoC cpu-dai and HDMI-encoder | ||
28 | */ | ||
29 | struct hdmi_codec_daifmt { | ||
30 | enum { | ||
31 | HDMI_I2S, | ||
32 | HDMI_RIGHT_J, | ||
33 | HDMI_LEFT_J, | ||
34 | HDMI_DSP_A, | ||
35 | HDMI_DSP_B, | ||
36 | HDMI_AC97, | ||
37 | HDMI_SPDIF, | ||
38 | } fmt; | ||
39 | int bit_clk_inv:1; | ||
40 | int frame_clk_inv:1; | ||
41 | int bit_clk_master:1; | ||
42 | int frame_clk_master:1; | ||
43 | }; | ||
44 | |||
45 | /* | ||
46 | * HDMI audio parameters | ||
47 | */ | ||
48 | struct hdmi_codec_params { | ||
49 | struct hdmi_audio_infoframe cea; | ||
50 | struct snd_aes_iec958 iec; | ||
51 | int sample_rate; | ||
52 | int sample_width; | ||
53 | int channels; | ||
54 | }; | ||
55 | |||
56 | struct hdmi_codec_ops { | ||
57 | /* | ||
58 | * Called when ASoC starts an audio stream setup. | ||
59 | * Optional | ||
60 | */ | ||
61 | int (*audio_startup)(struct device *dev); | ||
62 | |||
63 | /* | ||
64 | * Configures HDMI-encoder for audio stream. | ||
65 | * Mandatory | ||
66 | */ | ||
67 | int (*hw_params)(struct device *dev, | ||
68 | struct hdmi_codec_daifmt *fmt, | ||
69 | struct hdmi_codec_params *hparms); | ||
70 | |||
71 | /* | ||
72 | * Shuts down the audio stream. | ||
73 | * Mandatory | ||
74 | */ | ||
75 | void (*audio_shutdown)(struct device *dev); | ||
76 | |||
77 | /* | ||
78 | * Mute/unmute HDMI audio stream. | ||
79 | * Optional | ||
80 | */ | ||
81 | int (*digital_mute)(struct device *dev, bool enable); | ||
82 | |||
83 | /* | ||
84 | * Provides EDID-Like-Data from connected HDMI device. | ||
85 | * Optional | ||
86 | */ | ||
87 | int (*get_eld)(struct device *dev, uint8_t *buf, size_t len); | ||
88 | }; | ||
89 | |||
90 | /* HDMI codec initalization data */ | ||
91 | struct hdmi_codec_pdata { | ||
92 | const struct hdmi_codec_ops *ops; | ||
93 | uint i2s:1; | ||
94 | uint spdif:1; | ||
95 | int max_i2s_channels; | ||
96 | }; | ||
97 | |||
98 | #define HDMI_CODEC_DRV_NAME "hdmi-audio-codec" | ||
99 | |||
100 | #endif /* __HDMI_CODEC_H__ */ | ||
diff --git a/include/sound/pcm_iec958.h b/include/sound/pcm_iec958.h index 0eed397aca8e..36f023acb201 100644 --- a/include/sound/pcm_iec958.h +++ b/include/sound/pcm_iec958.h | |||
@@ -6,4 +6,6 @@ | |||
6 | int snd_pcm_create_iec958_consumer(struct snd_pcm_runtime *runtime, u8 *cs, | 6 | int snd_pcm_create_iec958_consumer(struct snd_pcm_runtime *runtime, u8 *cs, |
7 | size_t len); | 7 | size_t len); |
8 | 8 | ||
9 | int snd_pcm_create_iec958_consumer_hw_params(struct snd_pcm_hw_params *params, | ||
10 | u8 *cs, size_t len); | ||
9 | #endif | 11 | #endif |