23#ifndef __DRM_BRIDGE_H__
24#define __DRM_BRIDGE_H__
46struct hdmi_codec_daifmt;
47struct hdmi_codec_params;
433 unsigned int *num_output_fmts);
474 unsigned int *num_input_fmts);
603 const struct drm_edid *(*edid_read)(
struct drm_bridge *bridge,
668 unsigned long long tmds_rate);
689 const u8 *buffer,
size_t len);
710 const u8 *buffer,
size_t len);
733 const u8 *buffer,
size_t len);
756 const u8 *buffer,
size_t len);
777 const u8 *buffer,
size_t len);
806 struct hdmi_codec_daifmt *
fmt,
807 struct hdmi_codec_params *hparms);
836 bool enable,
int direction);
894 u32 signal_free_time,
struct cec_msg *msg);
923 struct hdmi_codec_daifmt *
fmt,
924 struct hdmi_codec_params *hparms);
953 bool enable,
int direction);
1316#define devm_drm_bridge_alloc(dev, type, member, funcs) \
1317 ((type *)__devm_drm_bridge_alloc(dev, sizeof(type), \
1318 offsetof(type, member), funcs))
1328struct drm_bridge *of_drm_find_and_get_bridge(
struct device_node *np);
1329struct drm_bridge *of_drm_find_bridge(
struct device_node *np);
1330struct drm_bridge *of_drm_get_bridge_by_endpoint(
const struct device_node *np,
1333static inline struct drm_bridge *of_drm_find_and_get_bridge(
struct device_node *np)
1337static inline struct drm_bridge *of_drm_find_bridge(
struct device_node *np)
1341static inline struct drm_bridge *of_drm_get_bridge_by_endpoint(
const struct device_node *np,
1348static inline bool drm_bridge_is_last(
struct drm_bridge *bridge)
1400drm_bridge_get_next_bridge(
struct drm_bridge *bridge)
1423drm_bridge_get_prev_bridge(
struct drm_bridge *bridge)
1470 struct drm_bridge *next = drm_bridge_get_next_bridge(bridge);
1510#define drm_for_each_bridge_in_chain_scoped(encoder, bridge) \
1511 for (struct drm_bridge *bridge __free(__drm_for_each_bridge_in_chain_cleanup) = \
1512 __drm_for_each_bridge_in_chain_scoped_start((encoder)); \
1514 bridge = __drm_for_each_bridge_in_chain_next(bridge)) \
1518__drm_for_each_bridge_in_chain_from_start(
struct drm_bridge *bridge)
1539#define drm_for_each_bridge_in_chain_from(first_bridge, bridge) \
1540 for (struct drm_bridge *bridge __free(__drm_for_each_bridge_in_chain_cleanup) = \
1541 __drm_for_each_bridge_in_chain_from_start(first_bridge); \
1543 bridge = __drm_for_each_bridge_in_chain_next(bridge)) \
1571 unsigned int *num_input_fmts);
1580 void (*cb)(
void *
data,
1587#ifdef CONFIG_DRM_PANEL_BRIDGE
1588bool drm_bridge_is_panel(
const struct drm_bridge *bridge);
1591 u32 connector_type);
1592void drm_panel_bridge_remove(
struct drm_bridge *bridge);
1593int drm_panel_bridge_set_orientation(
struct drm_connector *connector,
1599 u32 connector_type);
1604static inline bool drm_bridge_is_panel(
const struct drm_bridge *bridge)
1609static inline int drm_panel_bridge_set_orientation(
struct drm_connector *connector,
1616#if defined(CONFIG_OF) && defined(CONFIG_DRM_PANEL_BRIDGE)
1623 struct device_node *
node,
1631 struct device_node *
node,
#define list_last_entry_or_null(ptr, type, member)
Definition list.h:53
#define list_prev_entry(pos, member)
Definition list.h:30
#define list_next_entry(pos, member)
Definition list.h:27
#define list_first_entry_or_null(ptr, type, member)
Definition list.h:50
#define bool
Definition stdbool.h:35
void * endpoint
Definition main.cpp:149
uint8_t flags
Definition virtio.h:0
#define EINVAL
Definition acclib.h:198
#define ENODEV
Definition acclib.h:197
#define NULL
Definition actypes.h:561
#define BIT(nr)
Definition bitops.h:112
#define DEFINE_FREE(_name, _type, _free)
Definition cleanup.h:120
#define container_of(ptr, type, member)
Definition container_of.h:19
void devm_drm_put_bridge(struct device *dev, struct drm_bridge *bridge)
void drm_bridge_chain_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode)
enum drm_connector_status drm_bridge_detect(struct drm_bridge *bridge, struct drm_connector *connector)
void drm_bridge_remove(struct drm_bridge *bridge)
int devm_drm_bridge_add(struct device *dev, struct drm_bridge *bridge)
void drm_atomic_bridge_chain_disable(struct drm_bridge *bridge, struct drm_atomic_commit *state)
drm_bridge_ops
Definition drm_bridge.h:1002
@ DRM_BRIDGE_OP_MODES
Definition drm_bridge.h:1029
@ DRM_BRIDGE_OP_EDID
Definition drm_bridge.h:1014
@ DRM_BRIDGE_OP_HPD
Definition drm_bridge.h:1022
@ DRM_BRIDGE_OP_HDMI_AUDIO
Definition drm_bridge.h:1059
@ DRM_BRIDGE_OP_DP_AUDIO
Definition drm_bridge.h:1072
@ DRM_BRIDGE_OP_HDMI
Definition drm_bridge.h:1043
@ DRM_BRIDGE_OP_DETECT
Definition drm_bridge.h:1008
@ DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME
Definition drm_bridge.h:1088
@ DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME
Definition drm_bridge.h:1094
@ DRM_BRIDGE_OP_HDMI_CEC_ADAPTER
Definition drm_bridge.h:1082
@ DRM_BRIDGE_OP_HDMI_CEC_NOTIFIER
Definition drm_bridge.h:1077
void drm_bridge_debugfs_params(struct dentry *root)
enum drm_mode_status drm_bridge_chain_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode)
void drm_atomic_bridge_chain_enable(struct drm_bridge *bridge, struct drm_atomic_commit *state)
void drm_bridge_clear_and_put(struct drm_bridge **bridge_pp)
drm_bridge_attach_flags
Definition drm_bridge.h:53
@ DRM_BRIDGE_ATTACH_NO_CONNECTOR
Definition drm_bridge.h:58
u32 * drm_atomic_helper_bridge_propagate_bus_fmt(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, u32 output_fmt, unsigned int *num_input_fmts)
size_t size
Definition drm_bridge.h:1299
int drm_atomic_bridge_chain_check(struct drm_bridge *bridge, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state)
void drm_bridge_put(struct drm_bridge *bridge)
void drm_bridge_debugfs_encoder_params(struct dentry *root, struct drm_encoder *encoder)
void drm_bridge_add(struct drm_bridge *bridge)
void drm_bridge_exit(int idx)
const struct drm_edid * drm_bridge_edid_read(struct drm_bridge *bridge, struct drm_connector *connector)
void drm_bridge_hpd_notify(struct drm_bridge *bridge, enum drm_connector_status status)
void drm_bridge_hpd_disable(struct drm_bridge *bridge)
size_t size_t const struct drm_bridge_funcs * funcs
Definition drm_bridge.h:1300
void drm_bridge_hpd_enable(struct drm_bridge *bridge, void(*cb)(void *data, enum drm_connector_status status), void *data)
size_t size_t offset
Definition drm_bridge.h:1299
void drm_atomic_bridge_chain_post_disable(struct drm_bridge *bridge, struct drm_atomic_commit *state)
int drm_bridge_get_modes(struct drm_bridge *bridge, struct drm_connector *connector)
bool drm_bridge_enter(struct drm_bridge *bridge, int *idx)
struct drm_bridge * drm_bridge_get(struct drm_bridge *bridge)
int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge, struct drm_bridge *previous, enum drm_bridge_attach_flags flags)
void drm_bridge_unplug(struct drm_bridge *bridge)
void drm_atomic_bridge_chain_pre_enable(struct drm_bridge *bridge, struct drm_atomic_commit *state)
drm_connector_status
Definition drm_connector.h:67
struct drm_encoder * encoder
Definition drm_encoder.h:211
const char * fmt
Definition drm_file.h:466
drm_mode_status
Definition drm_modes.h:91
const struct device * dev
Definition drm_print.h:519
#define ERR_PTR(err)
Definition err.h:51
struct i915_user_extension base
Definition i915_drm.h:0
size_t len
Definition initial.c:23
void * data
Definition kthread.h:30
void int node
Definition kthread.h:31
#define mutex_lock(m)
Definition kernel.h:229
uint64_t u64
Definition kernel.h:17
#define mutex_unlock(m)
Definition kernel.h:230
uint8_t u8
Definition kernel.h:14
uint32_t u32
Definition kernel.h:16
Definition drm_atomic.h:480
Definition drm_bridge.h:64
int(* hdmi_clear_hdmi_infoframe)(struct drm_bridge *bridge)
Definition drm_bridge.h:699
int(* hdmi_cec_enable)(struct drm_bridge *bridge, bool enable)
Definition drm_bridge.h:865
void(* disable)(struct drm_bridge *bridge)
Definition drm_bridge.h:197
void(* atomic_destroy_state)(struct drm_bridge *bridge, struct drm_bridge_state *state)
Definition drm_bridge.h:407
void(* atomic_enable)(struct drm_bridge *bridge, struct drm_atomic_commit *state)
Definition drm_bridge.h:339
int(* dp_audio_prepare)(struct drm_bridge *bridge, struct drm_connector *connector, struct hdmi_codec_daifmt *fmt, struct hdmi_codec_params *hparms)
Definition drm_bridge.h:921
void(* atomic_disable)(struct drm_bridge *bridge, struct drm_atomic_commit *state)
Definition drm_bridge.h:356
void(* hdmi_audio_shutdown)(struct drm_bridge *bridge, struct drm_connector *connector)
Definition drm_bridge.h:820
int(* hdmi_cec_transmit)(struct drm_bridge *bridge, u8 attempts, u32 signal_free_time, struct cec_msg *msg)
Definition drm_bridge.h:893
enum drm_connector_status(* detect)(struct drm_bridge *bridge, struct drm_connector *connector)
Definition drm_bridge.h:547
int(* hdmi_audio_mute_stream)(struct drm_bridge *bridge, struct drm_connector *connector, bool enable, int direction)
Definition drm_bridge.h:834
int(* hdmi_cec_log_addr)(struct drm_bridge *bridge, u8 logical_addr)
Definition drm_bridge.h:879
bool(* mode_fixup)(struct drm_bridge *bridge, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode)
Definition drm_bridge.h:173
void(* hpd_disable)(struct drm_bridge *bridge)
Definition drm_bridge.h:647
void(* destroy)(struct drm_bridge *bridge)
Definition drm_bridge.h:89
int(* atomic_check)(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state)
Definition drm_bridge.h:501
void(* mode_set)(struct drm_bridge *bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode)
Definition drm_bridge.h:249
void(* detach)(struct drm_bridge *bridge)
Definition drm_bridge.h:99
int(* hdmi_write_audio_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len)
Definition drm_bridge.h:776
int(* hdmi_clear_spd_infoframe)(struct drm_bridge *bridge)
Definition drm_bridge.h:744
void(* enable)(struct drm_bridge *bridge)
Definition drm_bridge.h:300
void(* hpd_notify)(struct drm_bridge *bridge, struct drm_connector *connector, enum drm_connector_status status)
Definition drm_bridge.h:616
int(* hdmi_clear_avi_infoframe)(struct drm_bridge *bridge)
Definition drm_bridge.h:678
void(* atomic_pre_enable)(struct drm_bridge *bridge, struct drm_atomic_commit *state)
Definition drm_bridge.h:319
int(* hdmi_clear_hdr_drm_infoframe)(struct drm_bridge *bridge)
Definition drm_bridge.h:721
void(* atomic_post_disable)(struct drm_bridge *bridge, struct drm_atomic_commit *state)
Definition drm_bridge.h:375
int(* hdmi_write_spd_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len)
Definition drm_bridge.h:755
void(* hpd_enable)(struct drm_bridge *bridge)
Definition drm_bridge.h:633
void(* dp_audio_shutdown)(struct drm_bridge *bridge, struct drm_connector *connector)
Definition drm_bridge.h:937
int(* dp_audio_startup)(struct drm_bridge *bridge, struct drm_connector *connector)
Definition drm_bridge.h:907
int(* get_modes)(struct drm_bridge *bridge, struct drm_connector *connector)
Definition drm_bridge.h:572
int(* hdmi_audio_startup)(struct drm_bridge *bridge, struct drm_connector *connector)
Definition drm_bridge.h:790
enum drm_mode_status(* mode_valid)(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode)
Definition drm_bridge.h:132
enum drm_mode_status(* hdmi_tmds_char_rate_valid)(const struct drm_bridge *bridge, const struct drm_display_mode *mode, unsigned long long tmds_rate)
Definition drm_bridge.h:666
int(* hdmi_write_hdmi_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len)
Definition drm_bridge.h:709
int(* hdmi_write_hdr_drm_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len)
Definition drm_bridge.h:732
int(* hdmi_cec_init)(struct drm_bridge *bridge, struct drm_connector *connector)
Definition drm_bridge.h:850
int(* hdmi_clear_audio_infoframe)(struct drm_bridge *bridge)
Definition drm_bridge.h:766
struct drm_bridge_state *(* atomic_reset)(struct drm_bridge *bridge)
Definition drm_bridge.h:531
int(* dp_audio_mute_stream)(struct drm_bridge *bridge, struct drm_connector *connector, bool enable, int direction)
Definition drm_bridge.h:951
void(* post_disable)(struct drm_bridge *bridge)
Definition drm_bridge.h:221
int(* hdmi_write_avi_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len)
Definition drm_bridge.h:688
int(* hdmi_audio_prepare)(struct drm_bridge *bridge, struct drm_connector *connector, struct hdmi_codec_daifmt *fmt, struct hdmi_codec_params *hparms)
Definition drm_bridge.h:804
void(* pre_enable)(struct drm_bridge *bridge)
Definition drm_bridge.h:275
int(* attach)(struct drm_bridge *bridge, struct drm_encoder *encoder, enum drm_bridge_attach_flags flags)
Definition drm_bridge.h:78
void(* debugfs_init)(struct drm_bridge *bridge, struct dentry *root)
Definition drm_bridge.h:960
Definition drm_atomic.h:1339
struct drm_bridge * bridge
Definition drm_atomic.h:1348
Definition drm_bridge.h:966
u32 hold_time_ps
Definition drm_bridge.h:988
bool dual_link
Definition drm_bridge.h:996
u32 input_bus_flags
Definition drm_bridge.h:974
u32 setup_time_ps
Definition drm_bridge.h:981
Definition drm_bridge.h:1100
u8 hdmi_cec_available_las
Definition drm_bridge.h:1252
struct drm_encoder * encoder
Definition drm_bridge.h:1106
void * driver_private
Definition drm_bridge.h:1142
struct mutex hpd_mutex
Definition drm_bridge.h:1258
void * container
Definition drm_bridge.h:1126
const struct drm_bridge_timings * timings
Definition drm_bridge.h:1118
int hdmi_audio_dai_port
Definition drm_bridge.h:1242
struct list_head list
Definition drm_bridge.h:1112
int hdmi_audio_max_i2s_playback_channels
Definition drm_bridge.h:1221
struct i2c_adapter * ddc
Definition drm_bridge.h:1176
struct device_node * of_node
Definition drm_bridge.h:1110
bool support_hdcp
Definition drm_bridge.h:1172
void * hpd_data
Definition drm_bridge.h:1268
struct list_head chain_node
Definition drm_bridge.h:1108
const char * product
Definition drm_bridge.h:1188
enum drm_bridge_ops ops
Definition drm_bridge.h:1144
struct drm_device * dev
Definition drm_bridge.h:1104
void(* hpd_cb)(void *data, enum drm_connector_status status)
Definition drm_bridge.h:1263
u64 hdmi_audio_i2s_formats
Definition drm_bridge.h:1229
bool unplugged
Definition drm_bridge.h:1139
struct drm_private_obj base
Definition drm_bridge.h:1102
bool interlace_allowed
Definition drm_bridge.h:1155
unsigned int max_bpc
Definition drm_bridge.h:1202
bool ycbcr_420_allowed
Definition drm_bridge.h:1160
struct device * hdmi_cec_dev
Definition drm_bridge.h:1208
const struct drm_bridge_funcs * funcs
Definition drm_bridge.h:1120
unsigned int hdmi_audio_spdif_playback
Definition drm_bridge.h:1235
struct device * hdmi_audio_dev
Definition drm_bridge.h:1214
const char * hdmi_cec_adapter_name
Definition drm_bridge.h:1247
unsigned int supported_formats
Definition drm_bridge.h:1195
bool pre_enable_prev_first
Definition drm_bridge.h:1168
const char * vendor
Definition drm_bridge.h:1182
int type
Definition drm_bridge.h:1150
struct kref refcount
Definition drm_bridge.h:1131
struct drm_bridge * next_bridge
Definition drm_bridge.h:1279
Definition drm_connector.h:1065
Definition drm_connector.h:1998
Definition drm_device.h:75
Definition drm_connector.h:740
Definition drm_modes.h:252
Definition drm_encoder.h:106
struct mutex bridge_chain_mutex
Definition drm_encoder.h:194
struct list_head bridge_chain
Definition drm_encoder.h:191
Definition drm_panel.h:205
Definition drm_atomic.h:353
struct drm_modeset_lock lock
Definition drm_atomic.h:368
struct drm_private_state * state
Definition drm_atomic.h:373
Definition drm_edid.h:291
TTY * root
Definition tty.cpp:47