blob: 15a8c897b33fea3825b3a0facb709f65ccc1339b [file] [log] [blame]
Jani Nikula44c1220a2019-04-05 14:00:14 +03001/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2019 Intel Corporation
4 */
5
6#ifndef __INTEL_PANEL_H__
7#define __INTEL_PANEL_H__
8
9#include <linux/types.h>
10
Jani Nikula6cc42fb2021-08-25 14:06:50 +030011enum drm_connector_status;
Ville Syrjäläf0a57792022-03-11 19:24:21 +020012enum drrs_type;
Jani Nikula44c1220a2019-04-05 14:00:14 +030013struct drm_connector;
14struct drm_connector_state;
15struct drm_display_mode;
Jani Nikula15d045f2023-01-25 13:10:52 +020016struct drm_edid;
Jani Nikula6cc42fb2021-08-25 14:06:50 +030017struct drm_i915_private;
Jani Nikula44c1220a2019-04-05 14:00:14 +030018struct intel_connector;
Jani Nikula44c1220a2019-04-05 14:00:14 +030019struct intel_crtc_state;
Ville Syrjälä5248cc72022-03-23 20:29:33 +020020struct intel_encoder;
Jani Nikula44c1220a2019-04-05 14:00:14 +030021
Ville Syrjäläf70f8152022-11-25 19:31:48 +020022void intel_panel_init_alloc(struct intel_connector *connector);
Jani Nikula15d045f2023-01-25 13:10:52 +020023int intel_panel_init(struct intel_connector *connector,
24 const struct drm_edid *fixed_edid);
Ville Syrjälä5d2fd492022-03-23 20:29:27 +020025void intel_panel_fini(struct intel_connector *connector);
Ville Syrjäläb81dddb2020-09-10 19:42:56 +030026enum drm_connector_status
27intel_panel_detect(struct drm_connector *connector, bool force);
Jani Nikula3c6a4a02021-08-18 13:11:08 +030028bool intel_panel_use_ssc(struct drm_i915_private *i915);
Ville Syrjälä09270672022-03-11 19:24:18 +020029const struct drm_display_mode *
Ville Syrjälä43af6742022-03-11 19:24:20 +020030intel_panel_preferred_fixed_mode(struct intel_connector *connector);
31const struct drm_display_mode *
Ville Syrjälä09270672022-03-11 19:24:18 +020032intel_panel_fixed_mode(struct intel_connector *connector,
33 const struct drm_display_mode *mode);
34const struct drm_display_mode *
35intel_panel_downclock_mode(struct intel_connector *connector,
36 const struct drm_display_mode *adjusted_mode);
Ville Syrjälä74d6f312022-09-07 12:10:54 +030037const struct drm_display_mode *
38intel_panel_highest_mode(struct intel_connector *connector,
39 const struct drm_display_mode *adjusted_mode);
Ville Syrjälä53f64f32022-03-11 19:24:19 +020040int intel_panel_get_modes(struct intel_connector *connector);
Ville Syrjäläf0a57792022-03-11 19:24:21 +020041enum drrs_type intel_panel_drrs_type(struct intel_connector *connector);
Ville Syrjälä08243602021-09-23 23:01:04 +030042enum drm_mode_status
43intel_panel_mode_valid(struct intel_connector *connector,
44 const struct drm_display_mode *mode);
Jani Nikula4b93f492021-08-25 14:06:52 +030045int intel_panel_fitting(struct intel_crtc_state *crtc_state,
46 const struct drm_connector_state *conn_state);
Ville Syrjäläcff4c2c2021-09-27 21:52:07 +030047int intel_panel_compute_config(struct intel_connector *connector,
48 struct drm_display_mode *adjusted_mode);
Ville Syrjälä6e939732022-05-31 22:18:41 +030049void intel_panel_add_edid_fixed_modes(struct intel_connector *connector,
Ville Syrjäläeb89e832022-09-27 21:06:13 +030050 bool use_alt_fixed_modes);
Ville Syrjälädb10c142022-03-31 14:28:13 +030051void intel_panel_add_vbt_lfp_fixed_mode(struct intel_connector *connector);
52void intel_panel_add_vbt_sdvo_fixed_mode(struct intel_connector *connector);
53void intel_panel_add_encoder_fixed_mode(struct intel_connector *connector,
54 struct intel_encoder *encoder);
Jani Nikula44c1220a2019-04-05 14:00:14 +030055
56#endif /* __INTEL_PANEL_H__ */