Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/drm/display/drm_hdmi_cec_helper.h
26285 views
1
/* SPDX-License-Identifier: MIT */
2
3
#ifndef DRM_DISPLAY_HDMI_CEC_HELPER
4
#define DRM_DISPLAY_HDMI_CEC_HELPER
5
6
#include <linux/types.h>
7
8
struct drm_connector;
9
10
struct cec_msg;
11
struct device;
12
13
struct drm_connector_hdmi_cec_funcs {
14
/**
15
* @init: perform hardware-specific initialization before registering the CEC adapter
16
*/
17
int (*init)(struct drm_connector *connector);
18
19
/**
20
* @uninit: perform hardware-specific teardown for the CEC adapter
21
*/
22
void (*uninit)(struct drm_connector *connector);
23
24
/**
25
* @enable: enable or disable CEC adapter
26
*/
27
int (*enable)(struct drm_connector *connector, bool enable);
28
29
/**
30
* @log_addr: set adapter's logical address, can be called multiple
31
* times if adapter supports several LAs
32
*/
33
int (*log_addr)(struct drm_connector *connector, u8 logical_addr);
34
35
/**
36
* @transmit: start transmission of the specified CEC message
37
*/
38
int (*transmit)(struct drm_connector *connector, u8 attempts,
39
u32 signal_free_time, struct cec_msg *msg);
40
};
41
42
int drmm_connector_hdmi_cec_register(struct drm_connector *connector,
43
const struct drm_connector_hdmi_cec_funcs *funcs,
44
const char *name,
45
u8 available_las,
46
struct device *dev);
47
48
void drm_connector_hdmi_cec_received_msg(struct drm_connector *connector,
49
struct cec_msg *msg);
50
51
void drm_connector_hdmi_cec_transmit_done(struct drm_connector *connector,
52
u8 status,
53
u8 arb_lost_cnt, u8 nack_cnt,
54
u8 low_drive_cnt, u8 error_cnt);
55
56
void drm_connector_hdmi_cec_transmit_attempt_done(struct drm_connector *connector,
57
u8 status);
58
59
#if IS_ENABLED(CONFIG_DRM_DISPLAY_HDMI_CEC_NOTIFIER_HELPER)
60
int drmm_connector_hdmi_cec_notifier_register(struct drm_connector *connector,
61
const char *port_name,
62
struct device *dev);
63
#else
64
static inline int drmm_connector_hdmi_cec_notifier_register(struct drm_connector *connector,
65
const char *port_name,
66
struct device *dev)
67
{
68
return 0;
69
}
70
#endif
71
72
#endif
73
74