intel_extreme: define bdb header values, check panel type.
Change-Id: I2e5b61da9aecc11be13178a0b48211d172454d94 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4773 Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
committed by
Adrien Destugues
parent
d2e4af7873
commit
17e8767959
@@ -39,6 +39,12 @@ struct bdb_header {
|
|||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
|
||||||
|
enum bdb_block_id {
|
||||||
|
BDB_LVDS_OPTIONS = 40,
|
||||||
|
BDB_LVDS_LFP_DATA_PTRS
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// FIXME the struct definition for the bdb_header is not complete, so we rely
|
// FIXME the struct definition for the bdb_header is not complete, so we rely
|
||||||
// on direct access with hardcoded offsets to get the timings out of it.
|
// on direct access with hardcoded offsets to get the timings out of it.
|
||||||
#define _PIXEL_CLOCK(x) (x[0] + (x[1] << 8)) * 10000
|
#define _PIXEL_CLOCK(x) (x[0] + (x[1] << 8)) * 10000
|
||||||
@@ -212,17 +218,22 @@ get_lvds_mode_from_bios(display_timing* panelTiming)
|
|||||||
int id = vbios.memory[start];
|
int id = vbios.memory[start];
|
||||||
blockSize = vbios.ReadWord(start + 1) + 3;
|
blockSize = vbios.ReadWord(start + 1) + 3;
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 40: // Item BDB_LVDS_OPTIONS
|
case BDB_LVDS_OPTIONS:
|
||||||
{
|
{
|
||||||
struct lvds_bdb1 *lvds1;
|
struct lvds_bdb1 *lvds1;
|
||||||
lvds1 = (struct lvds_bdb1 *)(vbios.memory + start);
|
lvds1 = (struct lvds_bdb1 *)(vbios.memory + start);
|
||||||
panelType = lvds1->panel_type;
|
panelType = lvds1->panel_type;
|
||||||
|
if (panelType > 0xf) {
|
||||||
|
TRACE((DEVICE_NAME ": invalid panel type %d\n", panelType));
|
||||||
|
panelType = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
TRACE((DEVICE_NAME ": panel type: %d\n", panelType));
|
TRACE((DEVICE_NAME ": panel type: %d\n", panelType));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 41: // Item BDB_LVDS_LFP_DATA_PTRS
|
case BDB_LVDS_LFP_DATA_PTRS:
|
||||||
{
|
{
|
||||||
// First make sure we found block 40 and the panel type
|
// First make sure we found block BDB_LVDS_OPTIONS and the panel type
|
||||||
if (panelType == -1)
|
if (panelType == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user