Merge drm/drm-next into drm-intel-next
[platform/kernel/linux-starfive.git] / drivers / gpu / drm / msm / dp / dp_audio.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
4  */
5
6 #ifndef _DP_AUDIO_H_
7 #define _DP_AUDIO_H_
8
9 #include <linux/platform_device.h>
10
11 #include "dp_panel.h"
12 #include "dp_catalog.h"
13 #include <sound/hdmi-codec.h>
14
15 /**
16  * struct dp_audio
17  * @lane_count: number of lanes configured in current session
18  * @bw_code: link rate's bandwidth code for current session
19  */
20 struct dp_audio {
21         u32 lane_count;
22         u32 bw_code;
23 };
24
25 /**
26  * dp_audio_get()
27  *
28  * Creates and instance of dp audio.
29  *
30  * @pdev: caller's platform device instance.
31  * @panel: an instance of dp_panel module.
32  * @catalog: an instance of dp_catalog module.
33  *
34  * Returns the error code in case of failure, otherwize
35  * an instance of newly created dp_module.
36  */
37 struct dp_audio *dp_audio_get(struct platform_device *pdev,
38                         struct dp_panel *panel,
39                         struct dp_catalog *catalog);
40
41 /**
42  * dp_register_audio_driver()
43  *
44  * Registers DP device with hdmi_codec interface.
45  *
46  * @dev: DP device instance.
47  * @dp_audio: an instance of dp_audio module.
48  *
49  *
50  * Returns the error code in case of failure, otherwise
51  * zero on success.
52  */
53 int dp_register_audio_driver(struct device *dev,
54                 struct dp_audio *dp_audio);
55
56 void dp_unregister_audio_driver(struct device *dev, struct dp_audio *dp_audio);
57
58 /**
59  * dp_audio_put()
60  *
61  * Cleans the dp_audio instance.
62  *
63  * @dp_audio: an instance of dp_audio.
64  */
65 void dp_audio_put(struct dp_audio *dp_audio);
66
67 int dp_audio_hw_params(struct device *dev,
68         void *data,
69         struct hdmi_codec_daifmt *daifmt,
70         struct hdmi_codec_params *params);
71
72 #endif /* _DP_AUDIO_H_ */
73
74