git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22516 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2007-10-12 15:56:08 +00:00
parent 4ff0c50078
commit 13a81299f1
6 changed files with 39 additions and 38 deletions
+5 -4
View File
@@ -5,7 +5,7 @@
#ifndef _EDID_H
#define _EDID_H
//! EDID handling, including decoded EDID data block definition.
//! Extended Display Identification Data (EDID)
#include "edid_raw.h"
@@ -116,19 +116,20 @@ typedef struct {
} edid1_detailed_monitor;
// EDID data block
typedef struct{
typedef struct edid1_info {
edid1_vendor vendor;
edid1_version version;
edid1_display display;
edid1_established_timing established_timing;
edid1_std_timing std_timing[EDID1_NUM_STD_TIMING];
// since EDID version 1.2
edid1_detailed_monitor detailed_monitor[EDID1_NUM_DETAILED_MONITOR_DESC];
uint8 num_sections;
} edid1_info;
#define EDID_VERSION_1 1
#ifdef __cplusplus
extern "C" {
+7 -7
View File
@@ -147,13 +147,13 @@ typedef struct _PACKED {
// types of detailed monitor description
enum {
edid1_serial_number = 0xff,
edid1_ascii_data = 0xfe,
edid1_monitor_ranges = 0xfd,
edid1_monitor_name = 0xfc,
edid1_add_colour_pointer = 0xfb,
edid1_add_std_timing = 0xfa,
edid1_is_detailed_timing = 1
EDID1_SERIAL_NUMBER = 0xff,
EDID1_ASCII_DATA = 0xfe,
EDID1_MONITOR_RANGES = 0xfd,
EDID1_MONITOR_NAME = 0xfc,
EDID1_ADD_COLOUR_POINTER = 0xfb,
EDID1_ADD_STD_TIMING = 0xfa,
EDID1_IS_DETAILED_TIMING = 1
};
+15 -15
View File
@@ -179,7 +179,7 @@ decode_detailed_monitor(edid1_detailed_monitor *monitor,
int i, j;
for (i = 0; i < EDID1_NUM_DETAILED_MONITOR_DESC; ++i, ++monitor, ++raw) {
monitor->monitor_desc_type = edid1_is_detailed_timing;
monitor->monitor_desc_type = EDID1_IS_DETAILED_TIMING;
// workaround: normally, all four bytes must be zero for detailed
// description, but at least some Formac monitors violate that:
@@ -192,31 +192,31 @@ decode_detailed_monitor(edid1_detailed_monitor *monitor,
monitor->monitor_desc_type = raw->extra.monitor_desc_type;
switch (raw->extra.monitor_desc_type) {
case edid1_serial_number:
copy_str( monitor->data.serial_number,
raw->extra.data.serial_number, EDID1_EXTRA_STRING_LEN );
case EDID1_SERIAL_NUMBER:
copy_str(monitor->data.serial_number,
raw->extra.data.serial_number, EDID1_EXTRA_STRING_LEN);
break;
case edid1_ascii_data:
copy_str( monitor->data.ascii_data,
raw->extra.data.ascii_data, EDID1_EXTRA_STRING_LEN );
case EDID1_ASCII_DATA:
copy_str(monitor->data.ascii_data,
raw->extra.data.ascii_data, EDID1_EXTRA_STRING_LEN);
break;
case edid1_monitor_ranges:
case EDID1_MONITOR_RANGES:
monitor->data.monitor_range = raw->extra.data.monitor_range;
break;
case edid1_monitor_name:
copy_str( monitor->data.monitor_name,
raw->extra.data.monitor_name, EDID1_EXTRA_STRING_LEN );
case EDID1_MONITOR_NAME:
copy_str(monitor->data.monitor_name,
raw->extra.data.monitor_name, EDID1_EXTRA_STRING_LEN);
break;
case edid1_add_colour_pointer:
decode_whitepoint( monitor->data.whitepoint,
&raw->extra.data.whitepoint );
case EDID1_ADD_COLOUR_POINTER:
decode_whitepoint(monitor->data.whitepoint,
&raw->extra.data.whitepoint);
break;
case edid1_add_std_timing:
case EDID1_ADD_STD_TIMING:
for (j = 0; j < EDID1_NUM_EXTRA_STD_TIMING; ++j) {
decode_std_timing(&monitor->data.std_timing[j],
&raw->extra.data.std_timing[j]);
+8 -8
View File
@@ -90,15 +90,15 @@ edid_dump(edid1_info *edid)
edid1_detailed_monitor *monitor = &edid->detailed_monitor[i];
switch(monitor->monitor_desc_type) {
case edid1_serial_number:
case EDID1_SERIAL_NUMBER:
dprintf("Serial Number: %s\n", monitor->data.serial_number);
break;
case edid1_ascii_data:
case EDID1_ASCII_DATA:
dprintf(" %s\n", monitor->data.serial_number);
break;
case edid1_monitor_ranges:
case EDID1_MONITOR_RANGES:
{
edid1_monitor_range monitor_range = monitor->data.monitor_range;
@@ -110,11 +110,11 @@ edid_dump(edid1_info *edid)
break;
}
case edid1_monitor_name:
dprintf("Monitor Name: %s\n", monitor->data.serial_number);
case EDID1_MONITOR_NAME:
dprintf("Monitor Name: %s\n", monitor->data.monitor_name);
break;
case edid1_add_colour_pointer:
case EDID1_ADD_COLOUR_POINTER:
{
for (j = 0; j < EDID1_NUM_EXTRA_WHITEPOINTS; ++j) {
edid1_whitepoint *whitepoint = &monitor->data.whitepoint[j];
@@ -131,7 +131,7 @@ edid_dump(edid1_info *edid)
break;
}
case edid1_add_std_timing:
case EDID1_ADD_STD_TIMING:
{
for (j = 0; j < EDID1_NUM_EXTRA_STD_TIMING; ++j) {
edid1_std_timing *timing = &monitor->data.std_timing[j];
@@ -146,7 +146,7 @@ edid_dump(edid1_info *edid)
break;
}
case edid1_is_detailed_timing:
case EDID1_IS_DETAILED_TIMING:
{
edid1_detailed_timing *timing = &monitor->data.detailed_timing;
@@ -696,7 +696,7 @@ Radeon_FindFPTiming_DetailedMonitorDesc(const edid1_info *edid, fp_info *fp,
int i;
for (i = 0; i < EDID1_NUM_DETAILED_MONITOR_DESC; ++i) {
if (edid->detailed_monitor[i].monitor_desc_type == edid1_is_detailed_timing) {
if (edid->detailed_monitor[i].monitor_desc_type == EDID1_IS_DETAILED_TIMING) {
const edid1_detailed_timing *timing = &edid->detailed_monitor[i].data.detailed_timing;
SHOW_FLOW(2, "Found detailed timing for mode %dx%d in DDC data",
+3 -3
View File
@@ -289,10 +289,10 @@ vesa_get_vbe_info_block(vbe_info_block *info)
if (info->signature != VESA_SIGNATURE)
return B_ERROR;
dprintf("VESA version = %lx\n", info->version);
dprintf("VESA version = %d.%d\n", info->version.major, info->version.minor);
if (info->version.major < 2) {
dprintf("VESA support too old\n", info->version);
dprintf("VESA support too old\n");
return B_ERROR;
}
@@ -824,7 +824,7 @@ platform_init_video(void)
for (int32 i = 0; i < EDID1_NUM_DETAILED_MONITOR_DESC; i++) {
edid1_detailed_monitor &monitor = info.detailed_monitor[i];
if (monitor.monitor_desc_type == edid1_is_detailed_timing) {
if (monitor.monitor_desc_type == EDID1_IS_DETAILED_TIMING) {
defaultMode = find_video_mode(monitor.data.detailed_timing.h_active,
monitor.data.detailed_timing.v_active);
if (defaultMode != NULL)