mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
drm/edid: Move dvi_dual/max_tmds_clock to drm_display_info
We have the drm_display_info for storing information about the sink, so let's move dvi_dual and max_tmds_clock in there. v2: Deal with superfluous code shuffling Document dvi_dual and max_tmds_clock too Cc: Alex Deucher <alexander.deucher@amd.com> Cc: "Christian König" <christian.koenig@amd.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> (v1) Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1475070703-6435-5-git-send-email-ville.syrjala@linux.intel.com
This commit is contained in:
parent
ab5603c4d3
commit
2a272ca9b8
4 changed files with 23 additions and 14 deletions
|
@ -168,12 +168,12 @@ int amdgpu_connector_get_monitor_bpc(struct drm_connector *connector)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Any defined maximum tmds clock limit we must not exceed? */
|
/* Any defined maximum tmds clock limit we must not exceed? */
|
||||||
if (connector->max_tmds_clock > 0) {
|
if (connector->display_info.max_tmds_clock > 0) {
|
||||||
/* mode_clock is clock in kHz for mode to be modeset on this connector */
|
/* mode_clock is clock in kHz for mode to be modeset on this connector */
|
||||||
mode_clock = amdgpu_connector->pixelclock_for_modeset;
|
mode_clock = amdgpu_connector->pixelclock_for_modeset;
|
||||||
|
|
||||||
/* Maximum allowable input clock in kHz */
|
/* Maximum allowable input clock in kHz */
|
||||||
max_tmds_clock = connector->max_tmds_clock;
|
max_tmds_clock = connector->display_info.max_tmds_clock;
|
||||||
|
|
||||||
DRM_DEBUG("%s: hdmi mode dotclock %d kHz, max tmds input clock %d kHz.\n",
|
DRM_DEBUG("%s: hdmi mode dotclock %d kHz, max tmds input clock %d kHz.\n",
|
||||||
connector->name, mode_clock, max_tmds_clock);
|
connector->name, mode_clock, max_tmds_clock);
|
||||||
|
|
|
@ -3255,14 +3255,15 @@ static void fixup_detailed_cea_mode_clock(struct drm_display_mode *mode)
|
||||||
static void
|
static void
|
||||||
parse_hdmi_vsdb(struct drm_connector *connector, const u8 *db)
|
parse_hdmi_vsdb(struct drm_connector *connector, const u8 *db)
|
||||||
{
|
{
|
||||||
|
struct drm_display_info *info = &connector->display_info;
|
||||||
u8 len = cea_db_payload_len(db);
|
u8 len = cea_db_payload_len(db);
|
||||||
|
|
||||||
if (len >= 6) {
|
if (len >= 6) {
|
||||||
connector->eld[5] |= (db[6] >> 7) << 1; /* Supports_AI */
|
connector->eld[5] |= (db[6] >> 7) << 1; /* Supports_AI */
|
||||||
connector->dvi_dual = db[6] & 1;
|
info->dvi_dual = db[6] & 1;
|
||||||
}
|
}
|
||||||
if (len >= 7)
|
if (len >= 7)
|
||||||
connector->max_tmds_clock = db[7] * 5000;
|
info->max_tmds_clock = db[7] * 5000;
|
||||||
if (len >= 8) {
|
if (len >= 8) {
|
||||||
connector->latency_present[0] = db[8] >> 7;
|
connector->latency_present[0] = db[8] >> 7;
|
||||||
connector->latency_present[1] = (db[8] >> 6) & 1;
|
connector->latency_present[1] = (db[8] >> 6) & 1;
|
||||||
|
@ -3281,8 +3282,8 @@ parse_hdmi_vsdb(struct drm_connector *connector, const u8 *db)
|
||||||
"latency present %d %d, "
|
"latency present %d %d, "
|
||||||
"video latency %d %d, "
|
"video latency %d %d, "
|
||||||
"audio latency %d %d\n",
|
"audio latency %d %d\n",
|
||||||
connector->dvi_dual,
|
info->dvi_dual,
|
||||||
connector->max_tmds_clock,
|
info->max_tmds_clock,
|
||||||
(int) connector->latency_present[0],
|
(int) connector->latency_present[0],
|
||||||
(int) connector->latency_present[1],
|
(int) connector->latency_present[1],
|
||||||
connector->video_latency[0],
|
connector->video_latency[0],
|
||||||
|
@ -3349,6 +3350,7 @@ EXPORT_SYMBOL(drm_edid_get_monitor_name);
|
||||||
*/
|
*/
|
||||||
void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
|
void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
|
||||||
{
|
{
|
||||||
|
struct drm_display_info *info = &connector->display_info;
|
||||||
uint8_t *eld = connector->eld;
|
uint8_t *eld = connector->eld;
|
||||||
u8 *cea;
|
u8 *cea;
|
||||||
u8 *db;
|
u8 *db;
|
||||||
|
@ -3365,8 +3367,8 @@ void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
|
||||||
connector->video_latency[1] = 0;
|
connector->video_latency[1] = 0;
|
||||||
connector->audio_latency[1] = 0;
|
connector->audio_latency[1] = 0;
|
||||||
|
|
||||||
connector->max_tmds_clock = 0;
|
info->max_tmds_clock = 0;
|
||||||
connector->dvi_dual = false;
|
info->dvi_dual = false;
|
||||||
|
|
||||||
cea = drm_find_cea_extension(edid);
|
cea = drm_find_cea_extension(edid);
|
||||||
if (!cea) {
|
if (!cea) {
|
||||||
|
|
|
@ -198,12 +198,12 @@ int radeon_get_monitor_bpc(struct drm_connector *connector)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Any defined maximum tmds clock limit we must not exceed? */
|
/* Any defined maximum tmds clock limit we must not exceed? */
|
||||||
if (connector->max_tmds_clock > 0) {
|
if (connector->display_info.max_tmds_clock > 0) {
|
||||||
/* mode_clock is clock in kHz for mode to be modeset on this connector */
|
/* mode_clock is clock in kHz for mode to be modeset on this connector */
|
||||||
mode_clock = radeon_connector->pixelclock_for_modeset;
|
mode_clock = radeon_connector->pixelclock_for_modeset;
|
||||||
|
|
||||||
/* Maximum allowable input clock in kHz */
|
/* Maximum allowable input clock in kHz */
|
||||||
max_tmds_clock = connector->max_tmds_clock;
|
max_tmds_clock = connector->display_info.max_tmds_clock;
|
||||||
|
|
||||||
DRM_DEBUG("%s: hdmi mode dotclock %d kHz, max tmds input clock %d kHz.\n",
|
DRM_DEBUG("%s: hdmi mode dotclock %d kHz, max tmds input clock %d kHz.\n",
|
||||||
connector->name, mode_clock, max_tmds_clock);
|
connector->name, mode_clock, max_tmds_clock);
|
||||||
|
|
|
@ -166,6 +166,17 @@ struct drm_display_info {
|
||||||
*/
|
*/
|
||||||
u32 bus_flags;
|
u32 bus_flags;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @max_tmds_clock: Maximum TMDS clock rate supported by the
|
||||||
|
* sink in kHz. 0 means undefined.
|
||||||
|
*/
|
||||||
|
int max_tmds_clock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dvi_dual: Dual-link DVI sink?
|
||||||
|
*/
|
||||||
|
bool dvi_dual;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @edid_hdmi_dc_modes: Mask of supported hdmi deep color modes. Even
|
* @edid_hdmi_dc_modes: Mask of supported hdmi deep color modes. Even
|
||||||
* more stuff redundant with @bus_formats.
|
* more stuff redundant with @bus_formats.
|
||||||
|
@ -515,8 +526,6 @@ struct drm_cmdline_mode {
|
||||||
* @encoder_ids: valid encoders for this connector
|
* @encoder_ids: valid encoders for this connector
|
||||||
* @encoder: encoder driving this connector, if any
|
* @encoder: encoder driving this connector, if any
|
||||||
* @eld: EDID-like data, if present
|
* @eld: EDID-like data, if present
|
||||||
* @dvi_dual: dual link DVI, if found
|
|
||||||
* @max_tmds_clock: max clock rate, if found
|
|
||||||
* @latency_present: AV delay info from ELD, if found
|
* @latency_present: AV delay info from ELD, if found
|
||||||
* @video_latency: video latency info from ELD, if found
|
* @video_latency: video latency info from ELD, if found
|
||||||
* @audio_latency: audio latency info from ELD, if found
|
* @audio_latency: audio latency info from ELD, if found
|
||||||
|
@ -650,8 +659,6 @@ struct drm_connector {
|
||||||
#define MAX_ELD_BYTES 128
|
#define MAX_ELD_BYTES 128
|
||||||
/* EDID bits */
|
/* EDID bits */
|
||||||
uint8_t eld[MAX_ELD_BYTES];
|
uint8_t eld[MAX_ELD_BYTES];
|
||||||
bool dvi_dual;
|
|
||||||
int max_tmds_clock; /* in kHz */
|
|
||||||
bool latency_present[2];
|
bool latency_present[2];
|
||||||
int video_latency[2]; /* [0]: progressive, [1]: interlaced */
|
int video_latency[2]; /* [0]: progressive, [1]: interlaced */
|
||||||
int audio_latency[2];
|
int audio_latency[2];
|
||||||
|
|
Loading…
Reference in a new issue