~hui.wang/alsa-driver/dkms-packaging.audiosdw-ppa

« back to all changes in this revision

Viewing changes to buildroot/src/oem-audiosdw-lp1836324-0.6ubuntu1.2/include/dkms/sound/hdmi-codec.h

  • Committer: Hui Wang
  • Date: 2019-12-13 02:41:40 UTC
  • Revision ID: hui.wang@canonical.com-20191213024140-1cprdcbl3122fn85
insert pc-oem-dkms

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* SPDX-License-Identifier: GPL-2.0-only */
2
 
/*
3
 
 * hdmi-codec.h - HDMI Codec driver API
4
 
 *
5
 
 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com
6
 
 *
7
 
 * Author: Jyri Sarha <jsarha@ti.com>
8
 
 */
9
 
 
10
 
#ifndef __HDMI_CODEC_H__
11
 
#define __HDMI_CODEC_H__
12
 
 
13
 
#include <linux/of_graph.h>
14
 
#include <linux/hdmi.h>
15
 
#include <drm/drm_edid.h>
16
 
#include <dkms/sound/asoundef.h>
17
 
#include <dkms/sound/soc.h>
18
 
#include <dkms/uapi/sound/asound.h>
19
 
 
20
 
/*
21
 
 * Protocol between ASoC cpu-dai and HDMI-encoder
22
 
 */
23
 
struct hdmi_codec_daifmt {
24
 
        enum {
25
 
                HDMI_I2S,
26
 
                HDMI_RIGHT_J,
27
 
                HDMI_LEFT_J,
28
 
                HDMI_DSP_A,
29
 
                HDMI_DSP_B,
30
 
                HDMI_AC97,
31
 
                HDMI_SPDIF,
32
 
        } fmt;
33
 
        unsigned int bit_clk_inv:1;
34
 
        unsigned int frame_clk_inv:1;
35
 
        unsigned int bit_clk_master:1;
36
 
        unsigned int frame_clk_master:1;
37
 
};
38
 
 
39
 
/*
40
 
 * HDMI audio parameters
41
 
 */
42
 
struct hdmi_codec_params {
43
 
        struct hdmi_audio_infoframe cea;
44
 
        struct snd_aes_iec958 iec;
45
 
        int sample_rate;
46
 
        int sample_width;
47
 
        int channels;
48
 
};
49
 
 
50
 
typedef void (*hdmi_codec_plugged_cb)(struct device *dev,
51
 
                                      bool plugged);
52
 
 
53
 
struct hdmi_codec_pdata;
54
 
struct hdmi_codec_ops {
55
 
        /*
56
 
         * Called when ASoC starts an audio stream setup.
57
 
         * Optional
58
 
         */
59
 
        int (*audio_startup)(struct device *dev, void *data);
60
 
 
61
 
        /*
62
 
         * Configures HDMI-encoder for audio stream.
63
 
         * Mandatory
64
 
         */
65
 
        int (*hw_params)(struct device *dev, void *data,
66
 
                         struct hdmi_codec_daifmt *fmt,
67
 
                         struct hdmi_codec_params *hparms);
68
 
 
69
 
        /*
70
 
         * Shuts down the audio stream.
71
 
         * Mandatory
72
 
         */
73
 
        void (*audio_shutdown)(struct device *dev, void *data);
74
 
 
75
 
        /*
76
 
         * Mute/unmute HDMI audio stream.
77
 
         * Optional
78
 
         */
79
 
        int (*digital_mute)(struct device *dev, void *data, bool enable);
80
 
 
81
 
        /*
82
 
         * Provides EDID-Like-Data from connected HDMI device.
83
 
         * Optional
84
 
         */
85
 
        int (*get_eld)(struct device *dev, void *data,
86
 
                       uint8_t *buf, size_t len);
87
 
 
88
 
        /*
89
 
         * Getting DAI ID
90
 
         * Optional
91
 
         */
92
 
        int (*get_dai_id)(struct snd_soc_component *comment,
93
 
                          struct device_node *endpoint);
94
 
 
95
 
        /*
96
 
         * Hook callback function to handle connector plug event.
97
 
         * Optional
98
 
         */
99
 
        int (*hook_plugged_cb)(struct device *dev, void *data,
100
 
                               hdmi_codec_plugged_cb fn,
101
 
                               struct device *codec_dev);
102
 
};
103
 
 
104
 
/* HDMI codec initalization data */
105
 
struct hdmi_codec_pdata {
106
 
        const struct hdmi_codec_ops *ops;
107
 
        uint i2s:1;
108
 
        uint spdif:1;
109
 
        int max_i2s_channels;
110
 
        void *data;
111
 
};
112
 
 
113
 
struct snd_soc_component;
114
 
struct snd_soc_jack;
115
 
 
116
 
int hdmi_codec_set_jack_detect(struct snd_soc_component *component,
117
 
                               struct snd_soc_jack *jack);
118
 
 
119
 
#define HDMI_CODEC_DRV_NAME "hdmi-audio-codec"
120
 
 
121
 
#endif /* __HDMI_CODEC_H__ */