XenevaOS
Loading...
Searching...
No Matches
drm_connector.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 Intel Corporation
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that copyright
7 * notice and this permission notice appear in supporting documentation, and
8 * that the name of the copyright holders not be used in advertising or
9 * publicity pertaining to distribution of the software without specific,
10 * written prior permission. The copyright holders make no representations
11 * about the suitability of this software for any purpose. It is provided "as
12 * is" without express or implied warranty.
13 *
14 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
20 * OF THIS SOFTWARE.
21 */
22
23#ifndef __DRM_CONNECTOR_H__
24#define __DRM_CONNECTOR_H__
25
26#include <linux/list.h>
27#include <linux/llist.h>
28#include <linux/ctype.h>
29#include <linux/hdmi.h>
30#include <linux/notifier.h>
31#include <drm/drm_mode_object.h>
32#include <drm/drm_util.h>
33#include <drm/drm_property.h>
34
35#include <uapi/drm/drm_mode.h>
36
39struct drm_device;
40struct drm_crtc;
41struct drm_display_mode;
42struct drm_encoder;
43struct drm_panel;
44struct drm_property;
46struct drm_printer;
48struct drm_edid;
49struct edid;
50struct hdmi_codec_daifmt;
51struct hdmi_codec_params;
52struct i2c_adapter;
53
57 DRM_FORCE_ON, /* force on analog part normally */
58 DRM_FORCE_ON_DIGITAL, /* for DVI-I use digital connector */
59};
60
93
140
150
221
234};
235
236/*
237 * struct drm_scdc - Information about scdc capabilities of a HDMI 2.0 sink
238 *
239 * Provides SCDC register support and capabilities related information on a
240 * HDMI 2.0 sink. In case of a HDMI 1.4 sink, all parameter must be 0.
241 */
256
297
336
352
381
402
403const char *
405
422
438
462
556
581
582const char *
584
695
728
925
927 const u32 *formats,
928 unsigned int num_formats);
929
940 unsigned int bottom;
941
945 unsigned int left;
946
950 unsigned int right;
951
955 unsigned int top;
956};
957
985
1000
1001/*
1002 * struct drm_connector_hdmi_state - HDMI state container
1003 */
1061
1213
1224 int (*startup)(struct drm_connector *connector);
1225
1234 int (*prepare)(struct drm_connector *connector,
1235 struct hdmi_codec_daifmt *fmt,
1236 struct hdmi_codec_params *hparms);
1237
1246 void (*shutdown)(struct drm_connector *connector);
1247
1257 int (*mute_stream)(struct drm_connector *connector,
1258 bool enable, int direction);
1259};
1260
1263
1274 void (*phys_addr_invalidate)(struct drm_connector *connector);
1275
1281 void (*phys_addr_set)(struct drm_connector *connector, u16 addr);
1282};
1283
1302 int (*clear_infoframe)(struct drm_connector *connector);
1303
1318 int (*write_infoframe)(struct drm_connector *connector,
1319 const u8 *buffer, size_t len);
1320
1321};
1322
1341 enum drm_mode_status
1342 (*tmds_char_rate_valid)(const struct drm_connector *connector,
1343 const struct drm_display_mode *mode,
1344 unsigned long long tmds_rate);
1345
1359 const struct drm_edid *(*read_edid)(struct drm_connector *connector);
1360
1368
1376
1385
1393
1401};
1402
1427 int (*dpms)(struct drm_connector *connector, int mode);
1428
1439 void (*reset)(struct drm_connector *connector);
1440
1472 enum drm_connector_status (*detect)(struct drm_connector *connector,
1473 bool force);
1474
1489 void (*force)(struct drm_connector *connector);
1490
1514 int (*fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height);
1515
1530 int (*set_property)(struct drm_connector *connector, struct drm_property *property,
1531 uint64_t val);
1532
1549 int (*late_register)(struct drm_connector *connector);
1550
1562 void (*early_unregister)(struct drm_connector *connector);
1563
1572 void (*destroy)(struct drm_connector *connector);
1573
1605 struct drm_connector_state *(*atomic_duplicate_state)(struct drm_connector *connector);
1606
1615 void (*atomic_destroy_state)(struct drm_connector *connector,
1616 struct drm_connector_state *state);
1617
1660 int (*atomic_set_property)(struct drm_connector *connector,
1661 struct drm_connector_state *state,
1662 struct drm_property *property,
1663 uint64_t val);
1664
1683 int (*atomic_get_property)(struct drm_connector *connector,
1684 const struct drm_connector_state *state,
1685 struct drm_property *property,
1686 uint64_t *val);
1687
1698 const struct drm_connector_state *state);
1699
1706 void (*oob_hotplug_event)(struct drm_connector *connector,
1707 enum drm_connector_status status);
1708
1714 void (*debugfs_init)(struct drm_connector *connector, struct dentry *root);
1715};
1716
1732
1739
1746
1753
1759 unsigned int pixel_clock;
1760
1766 int xres;
1767
1773 int yres;
1774
1780 int bpp;
1781
1788
1794 bool rb;
1795
1802
1809 bool cvt;
1810
1818
1826
1836
1844
1849
1854
1861};
1862
1877
1884 struct platform_device *codec_pdev;
1885
1891 struct mutex lock;
1892
1900 void (*plugged_cb)(struct device *dev, bool plugged);
1901
1908
1916
1923};
1924
1925/*
1926 * struct drm_connector_hdmi - DRM Connector HDMI-related structure
1927 */
1929#define DRM_CONNECTOR_HDMI_VENDOR_LEN 8
1934
1935#define DRM_CONNECTOR_HDMI_PRODUCT_LEN 16
1940
1945 unsigned long supported_formats;
1946
1951
1955 struct {
1960 struct mutex lock;
1961
1968};
1969
1977 struct mutex mutex;
1978
1983
1987 void *data;
1988};
1989
2002 struct device *kdev;
2013
2023
2031
2034
2036 char *name;
2037
2043 struct mutex mutex;
2044
2051 unsigned index;
2052
2078
2086
2094
2101
2108
2116
2127
2130
2141
2144
2150
2161
2167
2175
2179 unsigned int max_bpc;
2180
2186
2189
2192
2198
2204
2210
2211#define DRM_CONNECTOR_POLL_HPD (1 << 0)
2212#define DRM_CONNECTOR_POLL_CONNECT (1 << 1)
2213#define DRM_CONNECTOR_POLL_DISCONNECT (1 << 2)
2214
2237
2244 int dpms;
2245
2248
2253
2260 const struct drm_edid *edid_override;
2261
2266
2269
2276
2284
2285#define MAX_ELD_BYTES 128
2290
2303
2314
2320
2323
2336
2338 struct dentry *debugfs_entry;
2339
2355
2356 /* DisplayID bits. FIXME: Extract into a substruct? */
2357
2372
2379
2389
2398
2403
2408
2413};
2414
2415#define obj_to_connector(x) container_of(x, struct drm_connector, base)
2416
2418 struct drm_connector *connector,
2419 const struct drm_connector_funcs *funcs,
2420 int connector_type);
2422 struct drm_connector *connector,
2423 const struct drm_connector_funcs *funcs,
2424 int connector_type,
2425 struct i2c_adapter *ddc);
2427 struct drm_connector *connector,
2428 const struct drm_connector_funcs *funcs,
2429 int connector_type,
2430 struct i2c_adapter *ddc);
2432 struct drm_connector *connector,
2433 const struct drm_connector_funcs *funcs,
2434 int connector_type,
2435 struct i2c_adapter *ddc);
2437 struct drm_connector *connector,
2438 const char *vendor, const char *product,
2439 const struct drm_connector_funcs *funcs,
2440 const struct drm_connector_hdmi_funcs *hdmi_funcs,
2441 int connector_type,
2442 struct i2c_adapter *ddc,
2443 unsigned long supported_formats,
2444 unsigned int max_bpc);
2450 struct drm_encoder *encoder);
2451
2452void drm_connector_cleanup(struct drm_connector *connector);
2453
2454static inline unsigned int drm_connector_index(const struct drm_connector *connector)
2455{
2456 return connector->index;
2457}
2458
2459static inline u32 drm_connector_mask(const struct drm_connector *connector)
2460{
2461 return 1 << connector->index;
2462}
2463
2473static inline struct drm_connector *drm_connector_lookup(struct drm_device *dev,
2474 struct drm_file *file_priv,
2475 uint32_t id)
2476{
2477 struct drm_mode_object *mo;
2479 return mo ? obj_to_connector(mo) : NULL;
2480}
2481
2488static inline void drm_connector_get(struct drm_connector *connector)
2489{
2490 drm_mode_object_get(&connector->base);
2491}
2492
2500static inline void drm_connector_put(struct drm_connector *connector)
2501{
2502 drm_mode_object_put(&connector->base);
2503}
2504
2516static inline bool
2517drm_connector_is_unregistered(struct drm_connector *connector)
2518{
2519 return READ_ONCE(connector->registration_state) ==
2521}
2522
2524 enum drm_connector_status status);
2525const char *drm_get_connector_type_name(unsigned int connector_type);
2528const char *drm_get_dpms_name(int val);
2530const char *drm_get_dvi_i_select_name(int val);
2531const char *drm_get_tv_mode_name(int val);
2532const char *drm_get_tv_subconnector_name(int val);
2533const char *drm_get_tv_select_name(int val);
2534const char *drm_get_dp_subconnector_name(int val);
2537
2538int drm_get_tv_mode_from_name(const char *name, size_t len);
2539
2542
2545 unsigned int num_modes,
2546 const char * const modes[]);
2548 unsigned int supported_tv_modes);
2553 u32 scaling_mode_mask);
2555 struct drm_connector *connector);
2561 struct drm_connector_state *new_state);
2564 u32 supported_colorspaces);
2566 u32 supported_colorspaces);
2569
2571 const char *path);
2574 const struct edid *edid);
2576 uint64_t link_status);
2578 struct drm_connector *connector, bool capable);
2580 struct drm_connector *connector,
2581 enum drm_panel_orientation panel_orientation);
2583 struct drm_connector *connector,
2584 enum drm_panel_orientation panel_orientation,
2585 int width, int height);
2587 struct drm_connector *connector,
2588 struct drm_panel *panel);
2590 int min, int max);
2594 struct drm_connector *connector, struct drm_privacy_screen *priv);
2596
2613
2615 const char topology_id[9]);
2617 const char topology_id[9]);
2619 struct drm_tile_group *tg);
2620
2636/* private: */
2639};
2640
2642 struct drm_connector_list_iter *iter);
2643struct drm_connector *
2646
2648 struct drm_encoder *encoder);
2649const char *drm_get_colorspace_name(enum drm_colorspace colorspace);
2650
2660#define drm_for_each_connector_iter(connector, iter) \
2661 while ((connector = drm_connector_list_iter_next(iter)))
2662
2668#define drm_connector_for_each_possible_encoder(connector, encoder) \
2669 drm_for_each_encoder_mask(encoder, (connector)->dev, \
2670 (connector)->possible_encoders)
2671
2672#endif
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
#define NULL
Definition actypes.h:561
#define BIT(nr)
Definition bitops.h:112
#define BITS_TO_LONGS(nr)
Definition bordoisila_bits.h:39
uint16_t vendor
Definition devhw.c:88
#define DRM_MODE_LINK_STATUS_BAD
Definition drm_mode.h:152
drm_mode_subconnector
Definition drm_mode.h:376
#define DRM_DISPLAY_MODE_LEN
Definition drm_mode.h:32
#define DRM_MODE_OBJECT_CONNECTOR
Definition drm_mode.h:614
#define DRM_MODE_LINK_STATUS_GOOD
Definition drm_mode.h:151
size_t size_t const struct drm_bridge_funcs * funcs
Definition drm_bridge.h:1300
void drm_connector_attach_privacy_screen_provider(struct drm_connector *connector, struct drm_privacy_screen *priv)
void drm_connector_cec_phys_addr_invalidate(struct drm_connector *connector)
void drm_connector_cleanup(struct drm_connector *connector)
const char * drm_get_dpms_name(int val)
int drm_connector_set_path_property(struct drm_connector *connector, const char *path)
void drm_connector_attach_hdr_output_metadata_property(struct drm_connector *connector)
const char * drm_get_tv_mode_name(int val)
const char * drm_get_dp_subconnector_name(int val)
struct drm_connector * drm_connector_list_iter_next(struct drm_connector_list_iter *iter)
const char * drm_get_hdcp_content_type_name(int val)
int drm_connector_attach_content_type_property(struct drm_connector *dev)
void drm_connector_cec_phys_addr_set(struct drm_connector *connector)
void drm_connector_attach_dp_subconnector_property(struct drm_connector *connector)
void drm_connector_set_vrr_capable_property(struct drm_connector *connector, bool capable)
int drm_mode_create_suggested_offset_properties(struct drm_device *dev)
void drm_connector_unregister(struct drm_connector *connector)
int drm_mode_create_tv_properties_legacy(struct drm_device *dev, unsigned int num_modes, const char *const modes[])
void drm_connector_attach_edid_property(struct drm_connector *connector)
drm_connector_registration_state
Definition drm_connector.h:102
@ DRM_CONNECTOR_UNREGISTERED
Definition drm_connector.h:138
@ DRM_CONNECTOR_INITIALIZING
Definition drm_connector.h:109
@ DRM_CONNECTOR_REGISTERED
Definition drm_connector.h:117
drm_connector_tv_mode
Definition drm_connector.h:160
@ DRM_MODE_TV_MODE_PAL_N
Definition drm_connector.h:199
@ DRM_MODE_TV_MODE_SECAM
Definition drm_connector.h:205
@ DRM_MODE_TV_MODE_PAL_M
Definition drm_connector.h:191
@ DRM_MODE_TV_MODE_NTSC_J
Definition drm_connector.h:179
@ DRM_MODE_TV_MODE_MONOCHROME
Definition drm_connector.h:212
@ DRM_MODE_TV_MODE_MAX
Definition drm_connector.h:219
@ DRM_MODE_TV_MODE_NTSC
Definition drm_connector.h:165
@ DRM_MODE_TV_MODE_PAL
Definition drm_connector.h:185
@ DRM_MODE_TV_MODE_NTSC_443
Definition drm_connector.h:172
int drm_connector_set_panel_orientation(struct drm_connector *connector, enum drm_panel_orientation panel_orientation)
int drm_connector_attach_scaling_mode_property(struct drm_connector *connector, u32 scaling_mode_mask)
drm_colorspace
Definition drm_connector.h:531
@ DRM_MODE_COLORIMETRY_XVYCC_709
Definition drm_connector.h:540
@ DRM_MODE_COLORIMETRY_BT2020_RGB
Definition drm_connector.h:545
@ DRM_MODE_COLORIMETRY_XVYCC_601
Definition drm_connector.h:539
@ DRM_MODE_COLORIMETRY_SMPTE_170M_YCC
Definition drm_connector.h:536
@ DRM_MODE_COLORIMETRY_COUNT
Definition drm_connector.h:554
@ DRM_MODE_COLORIMETRY_BT601_YCC
Definition drm_connector.h:553
@ DRM_MODE_COLORIMETRY_BT2020_YCC
Definition drm_connector.h:546
@ DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER
Definition drm_connector.h:549
@ DRM_MODE_COLORIMETRY_OPYCC_601
Definition drm_connector.h:542
@ DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED
Definition drm_connector.h:551
@ DRM_MODE_COLORIMETRY_BT709_YCC
Definition drm_connector.h:537
@ DRM_MODE_COLORIMETRY_NO_DATA
Definition drm_connector.h:535
@ DRM_MODE_COLORIMETRY_OPRGB
Definition drm_connector.h:543
@ DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65
Definition drm_connector.h:548
@ DRM_MODE_COLORIMETRY_DEFAULT
Definition drm_connector.h:533
@ DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT
Definition drm_connector.h:552
@ DRM_MODE_COLORIMETRY_BT2020_CYCC
Definition drm_connector.h:544
@ DRM_MODE_COLORIMETRY_SYCC_601
Definition drm_connector.h:541
drm_hdmi_broadcast_rgb
Definition drm_connector.h:385
@ DRM_HDMI_BROADCAST_RGB_LIMITED
Definition drm_connector.h:400
@ DRM_HDMI_BROADCAST_RGB_FULL
Definition drm_connector.h:395
@ DRM_HDMI_BROADCAST_RGB_AUTO
Definition drm_connector.h:390
int drm_connector_attach_max_bpc_property(struct drm_connector *connector, int min, int max)
const char * drm_hdmi_connector_get_broadcast_rgb_name(enum drm_hdmi_broadcast_rgb broadcast_rgb)
int drm_mode_create_dvi_i_properties(struct drm_device *dev)
void drm_connector_list_iter_begin(struct drm_device *dev, struct drm_connector_list_iter *iter)
drm_connector_status
Definition drm_connector.h:67
@ connector_status_connected
Definition drm_connector.h:72
@ connector_status_disconnected
Definition drm_connector.h:80
@ connector_status_unknown
Definition drm_connector.h:91
void drm_connector_create_privacy_screen_properties(struct drm_connector *conn)
int drm_connector_dynamic_register(struct drm_connector *connector)
#define DRM_CONNECTOR_HDMI_PRODUCT_LEN
Definition drm_connector.h:1935
void drm_connector_list_iter_end(struct drm_connector_list_iter *iter)
struct drm_tile_group * drm_mode_create_tile_group(struct drm_device *dev, const char topology_id[9])
void drm_connector_oob_hotplug_event(struct fwnode_handle *connector_fwnode, enum drm_connector_status status)
#define obj_to_connector(x)
Definition drm_connector.h:2415
void drm_connector_set_link_status_property(struct drm_connector *connector, uint64_t link_status)
int drm_mode_create_aspect_ratio_property(struct drm_device *dev)
int drmm_connector_init(struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type, struct i2c_adapter *ddc)
const char * drm_get_connector_type_name(unsigned int connector_type)
void drm_connector_attach_tv_margin_properties(struct drm_connector *conn)
void drm_connector_attach_privacy_screen_properties(struct drm_connector *conn)
int drm_connector_update_edid_property(struct drm_connector *connector, const struct edid *edid)
int drmm_connector_hdmi_init(struct drm_device *dev, struct drm_connector *connector, const char *vendor, const char *product, const struct drm_connector_funcs *funcs, const struct drm_connector_hdmi_funcs *hdmi_funcs, int connector_type, struct i2c_adapter *ddc, unsigned long supported_formats, unsigned int max_bpc)
int drm_connector_init_with_ddc(struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type, struct i2c_adapter *ddc)
const char * drm_get_content_protection_name(int val)
int drm_connector_init(struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type)
void drm_mode_put_tile_group(struct drm_device *dev, struct drm_tile_group *tg)
int drm_connector_attach_vrr_capable_property(struct drm_connector *connector)
const char * drm_get_dvi_i_select_name(int val)
int drm_mode_create_tv_margin_properties(struct drm_device *dev)
const char * drm_get_tv_subconnector_name(int val)
const char * drm_get_dvi_i_subconnector_name(int val)
drm_privacy_screen_status
Definition drm_connector.h:456
@ PRIVACY_SCREEN_ENABLED_LOCKED
Definition drm_connector.h:460
@ PRIVACY_SCREEN_DISABLED
Definition drm_connector.h:457
@ PRIVACY_SCREEN_DISABLED_LOCKED
Definition drm_connector.h:459
@ PRIVACY_SCREEN_ENABLED
Definition drm_connector.h:458
void drm_connector_attach_panel_type_property(struct drm_connector *connector)
int drm_mode_create_hdmi_colorspace_property(struct drm_connector *connector, u32 supported_colorspaces)
int drm_mode_create_tv_properties(struct drm_device *dev, unsigned int supported_tv_modes)
subpixel_order
Definition drm_connector.h:141
@ SubPixelHorizontalBGR
Definition drm_connector.h:144
@ SubPixelVerticalRGB
Definition drm_connector.h:145
@ SubPixelNone
Definition drm_connector.h:147
@ SubPixelUnknown
Definition drm_connector.h:142
@ SubPixelVerticalBGR
Definition drm_connector.h:146
@ SubPixelHorizontalRGB
Definition drm_connector.h:143
const char * drm_get_subpixel_order_name(enum subpixel_order order)
#define DRM_CONNECTOR_HDMI_VENDOR_LEN
Definition drm_connector.h:1929
#define MAX_ELD_BYTES
Definition drm_connector.h:2285
int drm_connector_set_panel_orientation_with_quirk(struct drm_connector *connector, enum drm_panel_orientation panel_orientation, int width, int height)
const char * drm_hdmi_connector_get_output_format_name(enum drm_output_color_format fmt)
const char * drm_get_tv_select_name(int val)
int drm_mode_create_dp_colorspace_property(struct drm_connector *connector, u32 supported_colorspaces)
int drm_connector_register(struct drm_connector *connector)
int drm_connector_attach_colorspace_property(struct drm_connector *connector)
drm_panel_orientation
Definition drm_connector.h:374
@ DRM_MODE_PANEL_ORIENTATION_RIGHT_UP
Definition drm_connector.h:379
@ DRM_MODE_PANEL_ORIENTATION_UNKNOWN
Definition drm_connector.h:375
@ DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP
Definition drm_connector.h:377
@ DRM_MODE_PANEL_ORIENTATION_LEFT_UP
Definition drm_connector.h:378
@ DRM_MODE_PANEL_ORIENTATION_NORMAL
Definition drm_connector.h:376
drm_connector_force
Definition drm_connector.h:54
@ DRM_FORCE_OFF
Definition drm_connector.h:56
@ DRM_FORCE_UNSPECIFIED
Definition drm_connector.h:55
@ DRM_FORCE_ON_DIGITAL
Definition drm_connector.h:58
@ DRM_FORCE_ON
Definition drm_connector.h:57
int drm_get_tv_mode_from_name(const char *name, size_t len)
int drm_connector_attach_broadcast_rgb_property(struct drm_connector *connector)
const char * drm_get_connector_status_name(enum drm_connector_status status)
bool drm_connector_atomic_hdr_metadata_equal(struct drm_connector_state *old_state, struct drm_connector_state *new_state)
int drm_display_info_set_bus_formats(struct drm_display_info *info, const u32 *formats, unsigned int num_formats)
drm_bus_flags
Definition drm_connector.h:603
@ DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE
Definition drm_connector.h:686
@ DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE
Definition drm_connector.h:630
@ DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE
Definition drm_connector.h:672
@ DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE
Definition drm_connector.h:623
@ DRM_BUS_FLAG_DATA_LSB_TO_MSB
Definition drm_connector.h:658
@ DRM_BUS_FLAG_DE_LOW
Definition drm_connector.h:609
@ DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE
Definition drm_connector.h:679
@ DRM_BUS_FLAG_DATA_MSB_TO_LSB
Definition drm_connector.h:651
@ DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE
Definition drm_connector.h:665
@ DRM_BUS_FLAG_DE_HIGH
Definition drm_connector.h:616
@ DRM_BUS_FLAG_SHARP_SIGNALS
Definition drm_connector.h:693
@ DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE
Definition drm_connector.h:637
@ DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE
Definition drm_connector.h:644
int drm_connector_set_orientation_from_panel(struct drm_connector *connector, struct drm_panel *panel)
int drm_connector_set_tile_property(struct drm_connector *connector)
int drm_connector_attach_encoder(struct drm_connector *connector, struct drm_encoder *encoder)
drm_link_status
Definition drm_connector.h:348
@ DRM_LINK_STATUS_BAD
Definition drm_connector.h:350
@ DRM_LINK_STATUS_GOOD
Definition drm_connector.h:349
const char * drm_get_colorspace_name(enum drm_colorspace colorspace)
void drm_connector_update_privacy_screen(const struct drm_connector_state *connector_state)
int drm_connector_dynamic_init(struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type, struct i2c_adapter *ddc)
drm_output_color_format
Definition drm_connector.h:575
@ DRM_OUTPUT_COLOR_FORMAT_YCBCR422
Definition drm_connector.h:578
@ DRM_OUTPUT_COLOR_FORMAT_YCBCR444
Definition drm_connector.h:577
@ DRM_OUTPUT_COLOR_FORMAT_RGB444
Definition drm_connector.h:576
@ DRM_OUTPUT_COLOR_FORMAT_YCBCR420
Definition drm_connector.h:579
struct drm_tile_group * drm_mode_get_tile_group(struct drm_device *dev, const char topology_id[9])
int drm_mode_create_scaling_mode_property(struct drm_device *dev)
int drm_mode_create_content_type_property(struct drm_device *dev)
bool drm_connector_has_possible_encoder(struct drm_connector *connector, struct drm_encoder *encoder)
struct drm_crtc struct drm_plane struct drm_plane const struct drm_crtc_funcs const char * name
Definition drm_crtc.h:1242
struct drm_encoder * encoder
Definition drm_encoder.h:211
const char * fmt
Definition drm_file.h:466
void drm_mode_object_put(struct drm_mode_object *obj)
void drm_mode_object_get(struct drm_mode_object *obj)
struct drm_mode_object * drm_mode_object_find(struct drm_device *dev, struct drm_file *file_priv, uint32_t id, uint32_t type)
drm_mode_status
Definition drm_modes.h:91
struct drm_plane uint32_t const struct drm_plane_funcs const uint32_t * formats
Definition drm_plane.h:831
const struct device * dev
Definition drm_print.h:519
hdmi_picture_aspect
Definition hdmi.h:111
size_t len
Definition initial.c:23
uint64_t u64
Definition kernel.h:17
uint8_t u8
Definition kernel.h:14
#define READ_ONCE(x)
Definition kernel.h:605
uint16_t u16
Definition kernel.h:15
uint32_t u32
Definition kernel.h:16
int const struct list_head const struct list_head struct list_head * head
Definition list_sort.h:13
#define min(a, b)
Definition minmax.h:24
#define max(a, b)
Definition minmax.h:28
Definition device.h:74
Definition fs.h:255
Definition drm_connector.h:702
u8 panel_type
Definition drm_connector.h:716
u8 version
Definition drm_connector.h:706
struct drm_luminance_range_info luminance_range2
Definition drm_connector.h:726
struct drm_luminance_range_info luminance_range1
Definition drm_connector.h:721
bool replay_mode
Definition drm_connector.h:711
Definition drm_atomic.h:480
Definition drm_connector.h:1725
bool refresh_specified
Definition drm_connector.h:1745
enum drm_connector_tv_mode tv_mode
Definition drm_connector.h:1853
bool interlace
Definition drm_connector.h:1801
int xres
Definition drm_connector.h:1766
struct drm_connector_tv_margins tv_margins
Definition drm_connector.h:1848
int bpp
Definition drm_connector.h:1780
bool margins
Definition drm_connector.h:1817
enum drm_panel_orientation panel_orientation
Definition drm_connector.h:1843
bool rb
Definition drm_connector.h:1794
unsigned int rotation_reflection
Definition drm_connector.h:1835
bool tv_mode_specified
Definition drm_connector.h:1860
enum drm_connector_force force
Definition drm_connector.h:1825
int refresh
Definition drm_connector.h:1787
unsigned int pixel_clock
Definition drm_connector.h:1759
char name[DRM_DISPLAY_MODE_LEN]
Definition drm_connector.h:1731
bool specified
Definition drm_connector.h:1738
int yres
Definition drm_connector.h:1773
bool cvt
Definition drm_connector.h:1809
bool bpp_specified
Definition drm_connector.h:1752
Definition drm_connector.h:1267
void(* phys_addr_set)(struct drm_connector *connector, u16 addr)
Definition drm_connector.h:1281
void(* phys_addr_invalidate)(struct drm_connector *connector)
Definition drm_connector.h:1274
Definition drm_connector.h:1973
void * data
Definition drm_connector.h:1987
const struct drm_connector_cec_funcs * funcs
Definition drm_connector.h:1982
Definition drm_connector.h:1410
void(* destroy)(struct drm_connector *connector)
Definition drm_connector.h:1572
void(* oob_hotplug_event)(struct drm_connector *connector, enum drm_connector_status status)
Definition drm_connector.h:1706
int(* set_property)(struct drm_connector *connector, struct drm_property *property, uint64_t val)
Definition drm_connector.h:1530
int(* dpms)(struct drm_connector *connector, int mode)
Definition drm_connector.h:1427
void(* atomic_destroy_state)(struct drm_connector *connector, struct drm_connector_state *state)
Definition drm_connector.h:1615
int(* late_register)(struct drm_connector *connector)
Definition drm_connector.h:1549
void(* force)(struct drm_connector *connector)
Definition drm_connector.h:1489
void(* atomic_print_state)(struct drm_printer *p, const struct drm_connector_state *state)
Definition drm_connector.h:1697
int(* atomic_set_property)(struct drm_connector *connector, struct drm_connector_state *state, struct drm_property *property, uint64_t val)
Definition drm_connector.h:1660
void(* reset)(struct drm_connector *connector)
Definition drm_connector.h:1439
void(* debugfs_init)(struct drm_connector *connector, struct dentry *root)
Definition drm_connector.h:1714
int(* atomic_get_property)(struct drm_connector *connector, const struct drm_connector_state *state, struct drm_property *property, uint64_t *val)
Definition drm_connector.h:1683
void(* early_unregister)(struct drm_connector *connector)
Definition drm_connector.h:1562
int(* fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height)
Definition drm_connector.h:1514
enum drm_connector_status(* detect)(struct drm_connector *connector, bool force)
Definition drm_connector.h:1472
Definition drm_connector.h:1214
void(* shutdown)(struct drm_connector *connector)
Definition drm_connector.h:1246
int(* startup)(struct drm_connector *connector)
Definition drm_connector.h:1224
int(* prepare)(struct drm_connector *connector, struct hdmi_codec_daifmt *fmt, struct hdmi_codec_params *hparms)
Definition drm_connector.h:1234
int(* mute_stream)(struct drm_connector *connector, bool enable, int direction)
Definition drm_connector.h:1257
Definition drm_connector.h:1869
bool last_state
Definition drm_connector.h:1915
void(* plugged_cb)(struct device *dev, bool plugged)
Definition drm_connector.h:1900
int dai_port
Definition drm_connector.h:1922
struct mutex lock
Definition drm_connector.h:1891
const struct drm_connector_hdmi_audio_funcs * funcs
Definition drm_connector.h:1876
struct device * plugged_cb_dev
Definition drm_connector.h:1907
struct platform_device * codec_pdev
Definition drm_connector.h:1884
Definition drm_connector.h:1326
struct drm_connector_infoframe_funcs hdr_drm
Definition drm_connector.h:1392
struct drm_connector_infoframe_funcs spd
Definition drm_connector.h:1400
struct drm_connector_infoframe_funcs avi
Definition drm_connector.h:1367
struct drm_connector_infoframe_funcs audio
Definition drm_connector.h:1384
enum drm_mode_status(* tmds_char_rate_valid)(const struct drm_connector *connector, const struct drm_display_mode *mode, unsigned long long tmds_rate)
Definition drm_connector.h:1342
struct drm_connector_infoframe_funcs hdmi
Definition drm_connector.h:1375
Definition drm_connector.h:989
union hdmi_infoframe data
Definition drm_connector.h:993
bool set
Definition drm_connector.h:998
Definition drm_connector.h:1004
enum drm_hdmi_broadcast_rgb broadcast_rgb
Definition drm_connector.h:1009
struct drm_connector_hdmi_infoframe hdr_drm
Definition drm_connector.h:1025
struct drm_connector_hdmi_state::@16 infoframes
unsigned long long tmds_char_rate
Definition drm_connector.h:1059
enum drm_output_color_format output_format
Definition drm_connector.h:1054
bool is_limited_range
Definition drm_connector.h:1044
struct drm_connector_hdmi_infoframe avi
Definition drm_connector.h:1019
struct drm_connector_hdmi_infoframe spd
Definition drm_connector.h:1031
unsigned int output_bpc
Definition drm_connector.h:1049
struct drm_connector_hdmi_infoframe hdmi
Definition drm_connector.h:1037
Definition drm_connector.h:1928
unsigned long supported_formats
Definition drm_connector.h:1945
struct drm_connector_hdmi::@17 infoframes
unsigned char vendor[DRM_CONNECTOR_HDMI_VENDOR_LEN] __nonstring
Definition drm_connector.h:1933
const struct drm_connector_hdmi_funcs * funcs
Definition drm_connector.h:1950
unsigned char product[DRM_CONNECTOR_HDMI_PRODUCT_LEN] __nonstring
Definition drm_connector.h:1939
Definition drm_modeset_helper_vtables.h:850
Definition drm_connector.h:1287
int(* clear_infoframe)(struct drm_connector *connector)
Definition drm_connector.h:1302
int(* write_infoframe)(struct drm_connector *connector, const u8 *buffer, size_t len)
Definition drm_connector.h:1318
Definition drm_connector.h:2635
struct drm_connector * conn
Definition drm_connector.h:2638
struct drm_device * dev
Definition drm_connector.h:2637
Definition drm_connector.h:1065
unsigned int content_protection
Definition drm_connector.h:1161
u8 max_bpc
Definition drm_connector.h:1193
struct drm_atomic_commit * state
Definition drm_connector.h:1102
u8 max_requested_bpc
Definition drm_connector.h:1187
unsigned int content_type
Definition drm_connector.h:1143
enum drm_link_status link_status
Definition drm_connector.h:1099
unsigned int hdcp_content_type
Definition drm_connector.h:1149
struct drm_encoder * best_encoder
Definition drm_connector.h:1093
enum hdmi_picture_aspect picture_aspect_ratio
Definition drm_connector.h:1135
struct drm_connector_hdmi_state hdmi
Definition drm_connector.h:1211
struct drm_property_blob * hdr_output_metadata
Definition drm_connector.h:1205
struct drm_crtc_commit * commit
Definition drm_connector.h:1109
struct drm_writeback_job * writeback_job
Definition drm_connector.h:1181
bool self_refresh_aware
Definition drm_connector.h:1126
struct drm_crtc * crtc
Definition drm_connector.h:1075
struct drm_tv_connector_state tv
Definition drm_connector.h:1112
enum drm_colorspace colorspace
Definition drm_connector.h:1168
unsigned int scaling_mode
Definition drm_connector.h:1155
struct drm_connector * connector
Definition drm_connector.h:1067
enum drm_privacy_screen_status privacy_screen_sw_state
Definition drm_connector.h:1199
Definition drm_connector.h:936
unsigned int left
Definition drm_connector.h:945
unsigned int bottom
Definition drm_connector.h:940
unsigned int right
Definition drm_connector.h:950
unsigned int top
Definition drm_connector.h:955
Definition drm_connector.h:1998
struct drm_privacy_screen * privacy_screen
Definition drm_connector.h:2188
uint8_t polled
Definition drm_connector.h:2236
struct mutex edid_override_mutex
Definition drm_connector.h:2265
struct drm_tile_group * tile_group
Definition drm_connector.h:2376
int connector_type
Definition drm_connector.h:2057
const struct drm_connector_helper_funcs * helper_private
Definition drm_connector.h:2247
struct drm_display_info display_info
Definition drm_connector.h:2126
struct drm_connector_cec cec
Definition drm_connector.h:2412
const struct drm_edid * edid_override
Definition drm_connector.h:2260
struct drm_property * colorspace_property
Definition drm_connector.h:2166
bool latency_present[2]
Definition drm_connector.h:2292
struct drm_property_blob * path_blob_ptr
Definition drm_connector.h:2174
struct drm_property * scaling_mode_property
Definition drm_connector.h:2149
struct fwnode_handle * fwnode
Definition drm_connector.h:2012
u32 possible_encoders
Definition drm_connector.h:2275
uint8_t tile_h_loc
Definition drm_connector.h:2385
struct llist_node free_node
Definition drm_connector.h:2397
struct drm_property * privacy_screen_sw_state_property
Definition drm_connector.h:2197
uint8_t num_v_tile
Definition drm_connector.h:2382
uint16_t tile_h_size
Definition drm_connector.h:2388
int null_edid_counter
Definition drm_connector.h:2319
bool has_tile
Definition drm_connector.h:2374
struct dentry * debugfs_entry
Definition drm_connector.h:2338
int video_latency[2]
Definition drm_connector.h:2297
struct drm_encoder * encoder
Definition drm_connector.h:2283
struct list_head global_connector_list_entry
Definition drm_connector.h:2030
enum drm_connector_force force
Definition drm_connector.h:2252
struct i2c_adapter * ddc
Definition drm_connector.h:2313
uint16_t tile_v_size
Definition drm_connector.h:2388
unsigned int max_bpc
Definition drm_connector.h:2179
struct drm_property * broadcast_rgb_property
Definition drm_connector.h:2209
bool ycbcr_420_allowed
Definition drm_connector.h:2085
struct drm_cmdline_mode cmdline_mode
Definition drm_connector.h:2250
uint8_t tile_v_loc
Definition drm_connector.h:2385
bool doublescan_allowed
Definition drm_connector.h:2071
struct list_head modes
Definition drm_connector.h:2100
struct drm_mode_object base
Definition drm_connector.h:2033
struct drm_property * max_bpc_property
Definition drm_connector.h:2185
enum drm_connector_registration_state registration_state
Definition drm_connector.h:2093
uint8_t eld[MAX_ELD_BYTES]
Definition drm_connector.h:2287
struct drm_connector_hdmi hdmi
Definition drm_connector.h:2402
bool tile_is_single_monitor
Definition drm_connector.h:2378
unsigned bad_edid_counter
Definition drm_connector.h:2322
u64 epoch_counter
Definition drm_connector.h:2268
struct drm_property * vrr_capable_property
Definition drm_connector.h:2160
int dpms
Definition drm_connector.h:2244
struct drm_property_blob * tile_blob_ptr
Definition drm_connector.h:2371
struct list_head probed_modes
Definition drm_connector.h:2115
int audio_latency[2]
Definition drm_connector.h:2302
struct mutex eld_mutex
Definition drm_connector.h:2289
bool stereo_allowed
Definition drm_connector.h:2077
u8 real_edid_checksum
Definition drm_connector.h:2335
uint8_t num_h_tile
Definition drm_connector.h:2382
int connector_type_id
Definition drm_connector.h:2059
bool interlace_allowed
Definition drm_connector.h:2065
struct drm_connector_state * state
Definition drm_connector.h:2354
enum drm_connector_status status
Definition drm_connector.h:2107
struct drm_property_blob * edid_blob_ptr
Definition drm_connector.h:2140
struct drm_object_properties properties
Definition drm_connector.h:2143
struct device * kdev
Definition drm_connector.h:2002
char * name
Definition drm_connector.h:2036
struct device_attribute * attr
Definition drm_connector.h:2004
struct notifier_block privacy_screen_notifier
Definition drm_connector.h:2191
struct drm_property * privacy_screen_hw_state_property
Definition drm_connector.h:2203
struct drm_device * dev
Definition drm_connector.h:2000
unsigned index
Definition drm_connector.h:2051
struct drm_connector_hdmi_audio hdmi_audio
Definition drm_connector.h:2407
bool edid_corrupt
Definition drm_connector.h:2329
const struct drm_connector_funcs * funcs
Definition drm_connector.h:2129
Definition drm_atomic.h:72
Definition drm_crtc.h:955
Definition drm_device.h:75
Definition drm_connector.h:740
u8 mso_stream_count
Definition drm_connector.h:882
unsigned int num_bus_formats
Definition drm_connector.h:788
bool dvi_dual
Definition drm_connector.h:806
struct drm_hdmi_info hdmi
Definition drm_connector.h:855
u8 cea_rev
Definition drm_connector.h:850
enum subpixel_order subpixel_order
Definition drm_connector.h:759
bool is_hdmi
Definition drm_connector.h:814
u32 bus_flags
Definition drm_connector.h:795
const u32 * bus_formats
Definition drm_connector.h:784
u8 edid_hdmi_ycbcr444_dc_modes
Definition drm_connector.h:845
u8 edid_hdmi_rgb444_dc_modes
Definition drm_connector.h:839
bool has_hdmi_infoframe
Definition drm_connector.h:827
int vics_len
Definition drm_connector.h:903
u32 color_formats
Definition drm_connector.h:777
u8 * vics
Definition drm_connector.h:898
u32 quirks
Definition drm_connector.h:910
int max_tmds_clock
Definition drm_connector.h:801
u16 source_physical_address
Definition drm_connector.h:918
u32 max_dsc_bpp
Definition drm_connector.h:893
unsigned int bpc
Definition drm_connector.h:754
struct drm_monitor_range_info monitor_range
Definition drm_connector.h:870
unsigned int width_mm
Definition drm_connector.h:744
u8 mso_pixel_overlap
Definition drm_connector.h:887
bool rgb_quant_range_selectable
Definition drm_connector.h:833
bool has_audio
Definition drm_connector.h:822
unsigned int height_mm
Definition drm_connector.h:749
bool non_desktop
Definition drm_connector.h:865
struct drm_amd_vsdb_info amd_vsdb
Definition drm_connector.h:923
struct drm_luminance_range_info luminance_range
Definition drm_connector.h:875
int panel_orientation
Definition drm_connector.h:768
Definition drm_modes.h:252
Definition drm_encoder.h:106
Definition drm_file.h:165
Definition drm_connector.h:264
bool native_420
Definition drm_connector.h:269
u8 max_lanes
Definition drm_connector.h:289
bool v_1p2
Definition drm_connector.h:266
u8 max_slices
Definition drm_connector.h:283
bool all_bpp
Definition drm_connector.h:275
int clk_per_slice
Definition drm_connector.h:286
u8 bpc_supported
Definition drm_connector.h:280
u8 total_chunk_kbytes
Definition drm_connector.h:295
u8 max_frl_rate_per_lane
Definition drm_connector.h:292
Definition drm_connector.h:304
unsigned long y420_cmdb_modes[BITS_TO_LONGS(256)]
Definition drm_connector.h:322
struct drm_hdmi_dsc_cap dsc_cap
Definition drm_connector.h:334
u8 y420_dc_modes
Definition drm_connector.h:325
unsigned long y420_vdb_modes[BITS_TO_LONGS(256)]
Definition drm_connector.h:314
u8 max_lanes
Definition drm_connector.h:331
struct drm_scdc scdc
Definition drm_connector.h:306
u8 max_frl_rate_per_lane
Definition drm_connector.h:328
Definition drm_connector.h:434
u32 max_luminance
Definition drm_connector.h:436
u32 min_luminance
Definition drm_connector.h:435
Definition drm_mode_object.h:55
Definition drm_modeset_lock.h:46
Definition drm_connector.h:418
u16 max_vfreq
Definition drm_connector.h:420
u16 min_vfreq
Definition drm_connector.h:419
Definition drm_mode_object.h:67
Definition drm_panel.h:205
Definition drm_print.h:181
Definition drm_privacy_screen_driver.h:50
Definition drm_property.h:216
Definition drm_property.h:80
Definition drm_connector.h:242
struct drm_scrambling scrambling
Definition drm_connector.h:254
bool supported
Definition drm_connector.h:246
bool read_request
Definition drm_connector.h:250
Definition drm_connector.h:225
bool low_rates
Definition drm_connector.h:233
bool supported
Definition drm_connector.h:229
Definition drm_connector.h:2607
struct kref refcount
Definition drm_connector.h:2608
int id
Definition drm_connector.h:2610
u8 group_data[9]
Definition drm_connector.h:2611
struct drm_device * dev
Definition drm_connector.h:2609
Definition drm_connector.h:972
unsigned int mode
Definition drm_connector.h:977
enum drm_mode_subconnector subconnector
Definition drm_connector.h:974
unsigned int flicker_reduction
Definition drm_connector.h:980
unsigned int brightness
Definition drm_connector.h:978
unsigned int contrast
Definition drm_connector.h:979
struct drm_connector_tv_margins margins
Definition drm_connector.h:975
unsigned int hue
Definition drm_connector.h:983
unsigned int overscan
Definition drm_connector.h:981
unsigned int legacy_mode
Definition drm_connector.h:976
unsigned int saturation
Definition drm_connector.h:982
enum drm_mode_subconnector select_subconnector
Definition drm_connector.h:973
Definition drm_writeback.h:92
Definition drm_edid.h:291
Definition property.h:56
Definition hdmi.h:398
Definition i2c.h:34
Definition kref.h:44
Definition list.h:11
Definition llist.h:42
Definition mutex.h:59
Definition notifier.h:50
Definition path.h:8
#define state(x)
#define mode(x)
TTY * root
Definition tty.cpp:47
Definition hdmi.h:441