* [igt-dev] [PATCH i-g-t] tools/intel_vbt_decode: update vbt defs from kernel
@ 2019-06-05 12:33 Jani Nikula
2019-06-05 12:57 ` Ville Syrjälä
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Jani Nikula @ 2019-06-05 12:33 UTC (permalink / raw)
To: igt-dev; +Cc: jani.nikula
Sync up to commit f41c615310d2 ("drm/i915/bios: add an enum for BDB
block IDs") in kernel intel_vbt_defs.h, and update the tool with the
struct renames.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_vbt_decode.c | 6 +-
tools/intel_vbt_defs.h | 657 +++++++++++++++++----------------------
2 files changed, 280 insertions(+), 383 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index d80b1dae7725..38eccc48f38b 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -228,7 +228,7 @@ static void dump_backlight_info(struct context *context,
const struct bdb_block *block)
{
const struct bdb_lfp_backlight_data *backlight = block->data;
- const struct bdb_lfp_backlight_data_entry *blc;
+ const struct lfp_backlight_data_entry *blc;
if (sizeof(*blc) != backlight->entry_size) {
printf("\tBacklight struct sizes don't match (expected %zu, got %u), skipping\n",
@@ -629,8 +629,8 @@ static void dump_lvds_data(struct context *context,
const uint8_t *lfp_data_ptr =
(const uint8_t *) lvds_data->data + lfp_data_size * i;
const uint8_t *timing_data = lfp_data_ptr + dvo_offset;
- const struct bdb_lvds_lfp_data_entry *lfp_data =
- (const struct bdb_lvds_lfp_data_entry *)lfp_data_ptr;
+ const struct lvds_lfp_data_entry *lfp_data =
+ (const struct lvds_lfp_data_entry *)lfp_data_ptr;
char marker;
if (i != context->panel_type && !context->dump_all_panel_types)
diff --git a/tools/intel_vbt_defs.h b/tools/intel_vbt_defs.h
index 3f5eff49105b..89ef14cafb6b 100644
--- a/tools/intel_vbt_defs.h
+++ b/tools/intel_vbt_defs.h
@@ -75,65 +75,51 @@ struct bdb_header {
u16 bdb_size;
} __packed;
-/* strictly speaking, this is a "skip" block, but it has interesting info */
-struct vbios_data {
- u8 type; /* 0 == desktop, 1 == mobile */
- u8 relstage;
- u8 chipset;
- u8 lvds_present:1;
- u8 tv_present:1;
- u8 rsvd2:6; /* finish byte */
- u8 rsvd3[4];
- u8 signon[155];
- u8 copyright[61];
- u16 code_segment;
- u8 dos_boot_mode;
- u8 bandwidth_percent;
- u8 rsvd4; /* popup memory size */
- u8 resize_pci_bios;
- u8 rsvd5; /* is crt already on ddc2 */
-} __packed;
-
/*
* There are several types of BIOS data blocks (BDBs), each block has
* an ID and size in the first 3 bytes (ID in first, size in next 2).
* Known types are listed below.
*/
-#define BDB_GENERAL_FEATURES 1
-#define BDB_GENERAL_DEFINITIONS 2
-#define BDB_OLD_TOGGLE_LIST 3
-#define BDB_MODE_SUPPORT_LIST 4
-#define BDB_GENERIC_MODE_TABLE 5
-#define BDB_EXT_MMIO_REGS 6
-#define BDB_SWF_IO 7
-#define BDB_SWF_MMIO 8
-#define BDB_PSR 9
-#define BDB_MODE_REMOVAL_TABLE 10
-#define BDB_CHILD_DEVICE_TABLE 11
-#define BDB_DRIVER_FEATURES 12
-#define BDB_DRIVER_PERSISTENCE 13
-#define BDB_EXT_TABLE_PTRS 14
-#define BDB_DOT_CLOCK_OVERRIDE 15
-#define BDB_DISPLAY_SELECT 16
-/* 17 rsvd */
-#define BDB_DRIVER_ROTATION 18
-#define BDB_DISPLAY_REMOVE 19
-#define BDB_OEM_CUSTOM 20
-#define BDB_EFP_LIST 21 /* workarounds for VGA hsync/vsync */
-#define BDB_SDVO_LVDS_OPTIONS 22
-#define BDB_SDVO_PANEL_DTDS 23
-#define BDB_SDVO_LVDS_PNP_IDS 24
-#define BDB_SDVO_LVDS_POWER_SEQ 25
-#define BDB_TV_OPTIONS 26
-#define BDB_EDP 27
-#define BDB_LVDS_OPTIONS 40
-#define BDB_LVDS_LFP_DATA_PTRS 41
-#define BDB_LVDS_LFP_DATA 42
-#define BDB_LVDS_BACKLIGHT 43
-#define BDB_LVDS_POWER 44
-#define BDB_MIPI_CONFIG 52
-#define BDB_MIPI_SEQUENCE 53
-#define BDB_SKIP 254 /* VBIOS private block, ignore */
+enum bdb_block_id {
+ BDB_GENERAL_FEATURES = 1,
+ BDB_GENERAL_DEFINITIONS = 2,
+ BDB_OLD_TOGGLE_LIST = 3,
+ BDB_MODE_SUPPORT_LIST = 4,
+ BDB_GENERIC_MODE_TABLE = 5,
+ BDB_EXT_MMIO_REGS = 6,
+ BDB_SWF_IO = 7,
+ BDB_SWF_MMIO = 8,
+ BDB_PSR = 9,
+ BDB_MODE_REMOVAL_TABLE = 10,
+ BDB_CHILD_DEVICE_TABLE = 11,
+ BDB_DRIVER_FEATURES = 12,
+ BDB_DRIVER_PERSISTENCE = 13,
+ BDB_EXT_TABLE_PTRS = 14,
+ BDB_DOT_CLOCK_OVERRIDE = 15,
+ BDB_DISPLAY_SELECT = 16,
+ BDB_DRIVER_ROTATION = 18,
+ BDB_DISPLAY_REMOVE = 19,
+ BDB_OEM_CUSTOM = 20,
+ BDB_EFP_LIST = 21, /* workarounds for VGA hsync/vsync */
+ BDB_SDVO_LVDS_OPTIONS = 22,
+ BDB_SDVO_PANEL_DTDS = 23,
+ BDB_SDVO_LVDS_PNP_IDS = 24,
+ BDB_SDVO_LVDS_POWER_SEQ = 25,
+ BDB_TV_OPTIONS = 26,
+ BDB_EDP = 27,
+ BDB_LVDS_OPTIONS = 40,
+ BDB_LVDS_LFP_DATA_PTRS = 41,
+ BDB_LVDS_LFP_DATA = 42,
+ BDB_LVDS_BACKLIGHT = 43,
+ BDB_LVDS_POWER = 44,
+ BDB_MIPI_CONFIG = 52,
+ BDB_MIPI_SEQUENCE = 53,
+ BDB_SKIP = 254, /* VBIOS private block, ignore */
+};
+
+/*
+ * Block 1 - General Bit Definitions
+ */
struct bdb_general_features {
/* bits 1 */
@@ -176,6 +162,10 @@ struct bdb_general_features {
u8 rsvd11:2; /* finish byte */
} __packed;
+/*
+ * Block 2 - General Bytes Definition
+ */
+
/* pre-915 */
#define GPIO_PIN_DVI_LVDS 0x03 /* "DVI/LVDS DDC GPIO pins" */
#define GPIO_PIN_ADD_I2C 0x05 /* "ADDCARD I2C GPIO pins" */
@@ -299,6 +289,8 @@ struct bdb_general_features {
#define DVO_PORT_DPA 10
#define DVO_PORT_DPE 11 /* 193 */
#define DVO_PORT_HDMIE 12 /* 193 */
+#define DVO_PORT_DPF 13 /* N/A */
+#define DVO_PORT_HDMIF 14 /* N/A */
#define DVO_PORT_MIPIA 21 /* 171 */
#define DVO_PORT_MIPIB 22 /* 171 */
#define DVO_PORT_MIPIC 23 /* 171 */
@@ -316,8 +308,26 @@ enum vbt_gmbus_ddi {
DDC_BUS_DDI_C,
DDC_BUS_DDI_D,
DDC_BUS_DDI_F,
+ ICL_DDC_BUS_DDI_A = 0x1,
+ ICL_DDC_BUS_DDI_B,
+ ICL_DDC_BUS_PORT_1 = 0x4,
+ ICL_DDC_BUS_PORT_2,
+ ICL_DDC_BUS_PORT_3,
+ ICL_DDC_BUS_PORT_4,
};
+#define DP_AUX_A 0x40
+#define DP_AUX_B 0x10
+#define DP_AUX_C 0x20
+#define DP_AUX_D 0x30
+#define DP_AUX_E 0x50
+#define DP_AUX_F 0x60
+
+#define VBT_DP_MAX_LINK_RATE_HBR3 0
+#define VBT_DP_MAX_LINK_RATE_HBR2 1
+#define VBT_DP_MAX_LINK_RATE_HBR 2
+#define VBT_DP_MAX_LINK_RATE_LBR 3
+
/*
* The child device config, aka the display device data structure, provides a
* description of a port and its configuration on the platform.
@@ -382,7 +392,8 @@ struct child_device_config {
u8 lspcon:1; /* 192 */
u8 iboost:1; /* 196 */
u8 hpd_invert:1; /* 196 */
- u8 flag_reserved:3;
+ u8 use_vbt_vswing:1; /* 218 */
+ u8 flag_reserved:2;
u8 hdmi_support:1; /* 158 */
u8 dp_support:1; /* 158 */
u8 tmds_support:1; /* 158 */
@@ -407,7 +418,9 @@ struct child_device_config {
u16 extended_type;
u8 dvo_function;
u8 dp_usb_type_c:1; /* 195 */
- u8 flags2_reserved:7; /* 195 */
+ u8 tbt:1; /* 209 */
+ u8 flags2_reserved:2; /* 195 */
+ u8 dp_port_trace_length:4; /* 209 */
u8 dp_gpio_index; /* 195 */
u16 dp_gpio_pin_num; /* 195 */
u8 dp_iboost_level:4; /* 196 */
@@ -441,194 +454,44 @@ struct bdb_general_definitions {
* number = (block_size - sizeof(bdb_general_definitions))/
* defs->child_dev_size;
*/
- uint8_t devices[0];
-} __packed;
-
-/* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */
-#define MODE_MASK 0x3
-
-struct bdb_lvds_options {
- u8 panel_type;
- u8 rsvd1;
- /* LVDS capabilities, stored in a dword */
- u8 pfit_mode:2;
- u8 pfit_text_mode_enhanced:1;
- u8 pfit_gfx_mode_enhanced:1;
- u8 pfit_ratio_auto:1;
- u8 pixel_dither:1;
- u8 lvds_edid:1;
- u8 rsvd2:1;
- u8 rsvd4;
- /* LVDS Panel channel bits stored here */
- u32 lvds_panel_channel_bits;
- /* LVDS SSC (Spread Spectrum Clock) bits stored here. */
- u16 ssc_bits;
- u16 ssc_freq;
- u16 ssc_ddt;
- /* Panel color depth defined here */
- u16 panel_color_depth;
- /* LVDS panel type bits stored here */
- u32 dps_panel_type_bits;
- /* LVDS backlight control type bits stored here */
- u32 blt_control_type_bits;
-} __packed;
-
-/* LFP pointer table contains entries to the struct below */
-struct bdb_lvds_lfp_data_ptr {
- u16 fp_timing_offset; /* offsets are from start of bdb */
- u8 fp_table_size;
- u16 dvo_timing_offset;
- u8 dvo_table_size;
- u16 panel_pnp_id_offset;
- u8 pnp_table_size;
-} __packed;
-
-struct bdb_lvds_lfp_data_ptrs {
- u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */
- struct bdb_lvds_lfp_data_ptr ptr[16];
-} __packed;
-
-/* LFP data has 3 blocks per entry */
-struct lvds_fp_timing {
- u16 x_res;
- u16 y_res;
- u32 lvds_reg;
- u32 lvds_reg_val;
- u32 pp_on_reg;
- u32 pp_on_reg_val;
- u32 pp_off_reg;
- u32 pp_off_reg_val;
- u32 pp_cycle_reg;
- u32 pp_cycle_reg_val;
- u32 pfit_reg;
- u32 pfit_reg_val;
- u16 terminator;
+ u8 devices[0];
} __packed;
-struct lvds_dvo_timing {
- u16 clock; /**< In 10khz */
- u8 hactive_lo;
- u8 hblank_lo;
- u8 hblank_hi:4;
- u8 hactive_hi:4;
- u8 vactive_lo;
- u8 vblank_lo;
- u8 vblank_hi:4;
- u8 vactive_hi:4;
- u8 hsync_off_lo;
- u8 hsync_pulse_width_lo;
- u8 vsync_pulse_width_lo:4;
- u8 vsync_off_lo:4;
- u8 vsync_pulse_width_hi:2;
- u8 vsync_off_hi:2;
- u8 hsync_pulse_width_hi:2;
- u8 hsync_off_hi:2;
- u8 himage_lo;
- u8 vimage_lo;
- u8 vimage_hi:4;
- u8 himage_hi:4;
- u8 h_border;
- u8 v_border;
- u8 rsvd1:3;
- u8 digital:2;
- u8 vsync_positive:1;
- u8 hsync_positive:1;
- u8 non_interlaced:1;
-} __packed;
-
-struct lvds_pnp_id {
- u16 mfg_name;
- u16 product_code;
- u32 serial;
- u8 mfg_week;
- u8 mfg_year;
-} __packed;
-
-struct bdb_lvds_lfp_data_entry {
- struct lvds_fp_timing fp_timing;
- struct lvds_dvo_timing dvo_timing;
- struct lvds_pnp_id pnp_id;
-} __packed;
-
-struct bdb_lvds_lfp_data {
- struct bdb_lvds_lfp_data_entry data[16];
-} __packed;
-
-#define BDB_BACKLIGHT_TYPE_NONE 0
-#define BDB_BACKLIGHT_TYPE_PWM 2
-
-struct bdb_lfp_backlight_data_entry {
- u8 type:2;
- u8 active_low_pwm:1;
- u8 obsolete1:5;
- u16 pwm_freq_hz;
- u8 min_brightness;
- u8 obsolete2;
- u8 obsolete3;
-} __packed;
-
-struct bdb_lfp_backlight_control_method {
- u8 type:4;
- u8 controller:4;
-} __packed;
-
-struct bdb_lfp_backlight_data {
- u8 entry_size;
- struct bdb_lfp_backlight_data_entry data[16];
- u8 level[16];
- struct bdb_lfp_backlight_control_method backlight_control[16];
-} __packed;
+/*
+ * Block 9 - SRD Feature Block
+ */
-struct aimdb_header {
- char signature[16];
- char oem_device[20];
- u16 aimdb_version;
- u16 aimdb_header_size;
- u16 aimdb_size;
-} __packed;
+struct psr_table {
+ /* Feature bits */
+ u8 full_link:1;
+ u8 require_aux_to_wakeup:1;
+ u8 feature_bits_rsvd:6;
-struct aimdb_block {
- u8 aimdb_id;
- u16 aimdb_size;
-} __packed;
+ /* Wait times */
+ u8 idle_frames:4;
+ u8 lines_to_wait:3;
+ u8 wait_times_rsvd:1;
-struct vch_panel_data {
- u16 fp_timing_offset;
- u8 fp_timing_size;
- u16 dvo_timing_offset;
- u8 dvo_timing_size;
- u16 text_fitting_offset;
- u8 text_fitting_size;
- u16 graphics_fitting_offset;
- u8 graphics_fitting_size;
-} __packed;
+ /* TP wake up time in multiple of 100 */
+ u16 tp1_wakeup_time;
+ u16 tp2_tp3_wakeup_time;
-struct vch_bdb_22 {
- struct aimdb_block aimdb_block;
- struct vch_panel_data panels[16];
+ /* PSR2 TP2/TP3 wakeup time for 16 panels */
+ u32 psr2_tp2_tp3_wakeup_time;
} __packed;
-struct bdb_sdvo_lvds_options {
- u8 panel_backlight;
- u8 h40_set_panel_type;
- u8 panel_type;
- u8 ssc_clk_freq;
- u16 als_low_trip;
- u16 als_high_trip;
- u8 sclalarcoeff_tab_row_num;
- u8 sclalarcoeff_tab_row_size;
- u8 coefficient[8];
- u8 panel_misc_bits_1;
- u8 panel_misc_bits_2;
- u8 panel_misc_bits_3;
- u8 panel_misc_bits_4;
+struct bdb_psr {
+ struct psr_table psr_table[16];
} __packed;
+/*
+ * Block 12 - Driver Features Data Block
+ */
#define BDB_DRIVER_FEATURE_NO_LVDS 0
#define BDB_DRIVER_FEATURE_INT_LVDS 1
#define BDB_DRIVER_FEATURE_SDVO_LVDS 2
-#define BDB_DRIVER_FEATURE_EDP 3
+#define BDB_DRIVER_FEATURE_INT_SDVO_LVDS 3
struct bdb_driver_features {
u8 boot_dev_algorithm:1;
@@ -684,6 +547,69 @@ struct bdb_driver_features {
u16 pc_feature_valid:1;
} __packed;
+/*
+ * Block 22 - SDVO LVDS General Options
+ */
+
+struct bdb_sdvo_lvds_options {
+ u8 panel_backlight;
+ u8 h40_set_panel_type;
+ u8 panel_type;
+ u8 ssc_clk_freq;
+ u16 als_low_trip;
+ u16 als_high_trip;
+ u8 sclalarcoeff_tab_row_num;
+ u8 sclalarcoeff_tab_row_size;
+ u8 coefficient[8];
+ u8 panel_misc_bits_1;
+ u8 panel_misc_bits_2;
+ u8 panel_misc_bits_3;
+ u8 panel_misc_bits_4;
+} __packed;
+
+/*
+ * Block 23 - SDVO LVDS Panel DTDs
+ */
+
+struct lvds_dvo_timing {
+ u16 clock; /**< In 10khz */
+ u8 hactive_lo;
+ u8 hblank_lo;
+ u8 hblank_hi:4;
+ u8 hactive_hi:4;
+ u8 vactive_lo;
+ u8 vblank_lo;
+ u8 vblank_hi:4;
+ u8 vactive_hi:4;
+ u8 hsync_off_lo;
+ u8 hsync_pulse_width_lo;
+ u8 vsync_pulse_width_lo:4;
+ u8 vsync_off_lo:4;
+ u8 vsync_pulse_width_hi:2;
+ u8 vsync_off_hi:2;
+ u8 hsync_pulse_width_hi:2;
+ u8 hsync_off_hi:2;
+ u8 himage_lo;
+ u8 vimage_lo;
+ u8 vimage_hi:4;
+ u8 himage_hi:4;
+ u8 h_border;
+ u8 v_border;
+ u8 rsvd1:3;
+ u8 digital:2;
+ u8 vsync_positive:1;
+ u8 hsync_positive:1;
+ u8 non_interlaced:1;
+} __packed;
+
+struct bdb_sdvo_panel_dtds {
+ struct lvds_dvo_timing dtds[4];
+} __packed;
+
+/*
+ * Block 27 - eDP VBT Block
+ */
+
#define EDP_18BPP 0
#define EDP_24BPP 1
#define EDP_30BPP 2
@@ -736,151 +662,133 @@ struct bdb_edp {
struct edp_full_link_params full_link_params[16]; /* 199 */
} __packed;
-struct psr_table {
- /* Feature bits */
- u8 full_link:1;
- u8 require_aux_to_wakeup:1;
- u8 feature_bits_rsvd:6;
+/*
+ * Block 40 - LFP Data Block
+ */
- /* Wait times */
- u8 idle_frames:4;
- u8 lines_to_wait:3;
- u8 wait_times_rsvd:1;
+/* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */
+#define MODE_MASK 0x3
- /* TP wake up time in multiple of 100 */
- u16 tp1_wakeup_time;
- u16 tp2_tp3_wakeup_time;
+struct bdb_lvds_options {
+ u8 panel_type;
+ u8 panel_type2; /* 212 */
+ /* LVDS capabilities, stored in a dword */
+ u8 pfit_mode:2;
+ u8 pfit_text_mode_enhanced:1;
+ u8 pfit_gfx_mode_enhanced:1;
+ u8 pfit_ratio_auto:1;
+ u8 pixel_dither:1;
+ u8 lvds_edid:1;
+ u8 rsvd2:1;
+ u8 rsvd4;
+ /* LVDS Panel channel bits stored here */
+ u32 lvds_panel_channel_bits;
+ /* LVDS SSC (Spread Spectrum Clock) bits stored here. */
+ u16 ssc_bits;
+ u16 ssc_freq;
+ u16 ssc_ddt;
+ /* Panel color depth defined here */
+ u16 panel_color_depth;
+ /* LVDS panel type bits stored here */
+ u32 dps_panel_type_bits;
+ /* LVDS backlight control type bits stored here */
+ u32 blt_control_type_bits;
+
+ u16 lcdvcc_s0_enable; /* 200 */
+ u32 rotation; /* 228 */
} __packed;
-struct bdb_psr {
- struct psr_table psr_table[16];
+/*
+ * Block 41 - LFP Data Table Pointers
+ */
+
+/* LFP pointer table contains entries to the struct below */
+struct lvds_lfp_data_ptr {
+ u16 fp_timing_offset; /* offsets are from start of bdb */
+ u8 fp_table_size;
+ u16 dvo_timing_offset;
+ u8 dvo_table_size;
+ u16 panel_pnp_id_offset;
+ u8 pnp_table_size;
+} __packed;
+
+struct bdb_lvds_lfp_data_ptrs {
+ u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */
+ struct lvds_lfp_data_ptr ptr[16];
} __packed;
/*
- * Driver<->VBIOS interaction occurs through scratch bits in
- * GR18 & SWF*.
+ * Block 42 - LFP Data Tables
*/
-/* GR18 bits are set on display switch and hotkey events */
-#define GR18_DRIVER_SWITCH_EN (1<<7) /* 0: VBIOS control, 1: driver control */
-#define GR18_HOTKEY_MASK 0x78 /* See also SWF4 15:0 */
-#define GR18_HK_NONE (0x0<<3)
-#define GR18_HK_LFP_STRETCH (0x1<<3)
-#define GR18_HK_TOGGLE_DISP (0x2<<3)
-#define GR18_HK_DISP_SWITCH (0x4<<3) /* see SWF14 15:0 for what to enable */
-#define GR18_HK_POPUP_DISABLED (0x6<<3)
-#define GR18_HK_POPUP_ENABLED (0x7<<3)
-#define GR18_HK_PFIT (0x8<<3)
-#define GR18_HK_APM_CHANGE (0xa<<3)
-#define GR18_HK_MULTIPLE (0xc<<3)
-#define GR18_USER_INT_EN (1<<2)
-#define GR18_A0000_FLUSH_EN (1<<1)
-#define GR18_SMM_EN (1<<0)
-
-/* Set by driver, cleared by VBIOS */
-#define SWF00_YRES_SHIFT 16
-#define SWF00_XRES_SHIFT 0
-#define SWF00_RES_MASK 0xffff
-
-/* Set by VBIOS at boot time and driver at runtime */
-#define SWF01_TV2_FORMAT_SHIFT 8
-#define SWF01_TV1_FORMAT_SHIFT 0
-#define SWF01_TV_FORMAT_MASK 0xffff
-
-#define SWF10_VBIOS_BLC_I2C_EN (1<<29)
-#define SWF10_GTT_OVERRIDE_EN (1<<28)
-#define SWF10_LFP_DPMS_OVR (1<<27) /* override DPMS on display switch */
-#define SWF10_ACTIVE_TOGGLE_LIST_MASK (7<<24)
-#define SWF10_OLD_TOGGLE 0x0
-#define SWF10_TOGGLE_LIST_1 0x1
-#define SWF10_TOGGLE_LIST_2 0x2
-#define SWF10_TOGGLE_LIST_3 0x3
-#define SWF10_TOGGLE_LIST_4 0x4
-#define SWF10_PANNING_EN (1<<23)
-#define SWF10_DRIVER_LOADED (1<<22)
-#define SWF10_EXTENDED_DESKTOP (1<<21)
-#define SWF10_EXCLUSIVE_MODE (1<<20)
-#define SWF10_OVERLAY_EN (1<<19)
-#define SWF10_PLANEB_HOLDOFF (1<<18)
-#define SWF10_PLANEA_HOLDOFF (1<<17)
-#define SWF10_VGA_HOLDOFF (1<<16)
-#define SWF10_ACTIVE_DISP_MASK 0xffff
-#define SWF10_PIPEB_LFP2 (1<<15)
-#define SWF10_PIPEB_EFP2 (1<<14)
-#define SWF10_PIPEB_TV2 (1<<13)
-#define SWF10_PIPEB_CRT2 (1<<12)
-#define SWF10_PIPEB_LFP (1<<11)
-#define SWF10_PIPEB_EFP (1<<10)
-#define SWF10_PIPEB_TV (1<<9)
-#define SWF10_PIPEB_CRT (1<<8)
-#define SWF10_PIPEA_LFP2 (1<<7)
-#define SWF10_PIPEA_EFP2 (1<<6)
-#define SWF10_PIPEA_TV2 (1<<5)
-#define SWF10_PIPEA_CRT2 (1<<4)
-#define SWF10_PIPEA_LFP (1<<3)
-#define SWF10_PIPEA_EFP (1<<2)
-#define SWF10_PIPEA_TV (1<<1)
-#define SWF10_PIPEA_CRT (1<<0)
-
-#define SWF11_MEMORY_SIZE_SHIFT 16
-#define SWF11_SV_TEST_EN (1<<15)
-#define SWF11_IS_AGP (1<<14)
-#define SWF11_DISPLAY_HOLDOFF (1<<13)
-#define SWF11_DPMS_REDUCED (1<<12)
-#define SWF11_IS_VBE_MODE (1<<11)
-#define SWF11_PIPEB_ACCESS (1<<10) /* 0 here means pipe a */
-#define SWF11_DPMS_MASK 0x07
-#define SWF11_DPMS_OFF (1<<2)
-#define SWF11_DPMS_SUSPEND (1<<1)
-#define SWF11_DPMS_STANDBY (1<<0)
-#define SWF11_DPMS_ON 0
-
-#define SWF14_GFX_PFIT_EN (1<<31)
-#define SWF14_TEXT_PFIT_EN (1<<30)
-#define SWF14_LID_STATUS_CLOSED (1<<29) /* 0 here means open */
-#define SWF14_POPUP_EN (1<<28)
-#define SWF14_DISPLAY_HOLDOFF (1<<27)
-#define SWF14_DISP_DETECT_EN (1<<26)
-#define SWF14_DOCKING_STATUS_DOCKED (1<<25) /* 0 here means undocked */
-#define SWF14_DRIVER_STATUS (1<<24)
-#define SWF14_OS_TYPE_WIN9X (1<<23)
-#define SWF14_OS_TYPE_WINNT (1<<22)
-/* 21:19 rsvd */
-#define SWF14_PM_TYPE_MASK 0x00070000
-#define SWF14_PM_ACPI_VIDEO (0x4 << 16)
-#define SWF14_PM_ACPI (0x3 << 16)
-#define SWF14_PM_APM_12 (0x2 << 16)
-#define SWF14_PM_APM_11 (0x1 << 16)
-#define SWF14_HK_REQUEST_MASK 0x0000ffff /* see GR18 6:3 for event type */
- /* if GR18 indicates a display switch */
-#define SWF14_DS_PIPEB_LFP2_EN (1<<15)
-#define SWF14_DS_PIPEB_EFP2_EN (1<<14)
-#define SWF14_DS_PIPEB_TV2_EN (1<<13)
-#define SWF14_DS_PIPEB_CRT2_EN (1<<12)
-#define SWF14_DS_PIPEB_LFP_EN (1<<11)
-#define SWF14_DS_PIPEB_EFP_EN (1<<10)
-#define SWF14_DS_PIPEB_TV_EN (1<<9)
-#define SWF14_DS_PIPEB_CRT_EN (1<<8)
-#define SWF14_DS_PIPEA_LFP2_EN (1<<7)
-#define SWF14_DS_PIPEA_EFP2_EN (1<<6)
-#define SWF14_DS_PIPEA_TV2_EN (1<<5)
-#define SWF14_DS_PIPEA_CRT2_EN (1<<4)
-#define SWF14_DS_PIPEA_LFP_EN (1<<3)
-#define SWF14_DS_PIPEA_EFP_EN (1<<2)
-#define SWF14_DS_PIPEA_TV_EN (1<<1)
-#define SWF14_DS_PIPEA_CRT_EN (1<<0)
- /* if GR18 indicates a panel fitting request */
-#define SWF14_PFIT_EN (1<<0) /* 0 means disable */
- /* if GR18 indicates an APM change request */
-#define SWF14_APM_HIBERNATE 0x4
-#define SWF14_APM_SUSPEND 0x3
-#define SWF14_APM_STANDBY 0x1
-#define SWF14_APM_RESTORE 0x0
-
-/* Block 52 contains MIPI configuration block
- * 6 * bdb_mipi_config, followed by 6 pps data block
- * block below
+/* LFP data has 3 blocks per entry */
+struct lvds_fp_timing {
+ u16 x_res;
+ u16 y_res;
+ u32 lvds_reg;
+ u32 lvds_reg_val;
+ u32 pp_on_reg;
+ u32 pp_on_reg_val;
+ u32 pp_off_reg;
+ u32 pp_off_reg_val;
+ u32 pp_cycle_reg;
+ u32 pp_cycle_reg_val;
+ u32 pfit_reg;
+ u32 pfit_reg_val;
+ u16 terminator;
+} __packed;
+
+struct lvds_pnp_id {
+ u16 mfg_name;
+ u16 product_code;
+ u32 serial;
+ u8 mfg_week;
+ u8 mfg_year;
+} __packed;
+
+struct lvds_lfp_data_entry {
+ struct lvds_fp_timing fp_timing;
+ struct lvds_dvo_timing dvo_timing;
+ struct lvds_pnp_id pnp_id;
+} __packed;
+
+struct bdb_lvds_lfp_data {
+ struct lvds_lfp_data_entry data[16];
+} __packed;
+
+/*
+ * Block 43 - LFP Backlight Control Data Block
*/
+
+#define BDB_BACKLIGHT_TYPE_NONE 0
+#define BDB_BACKLIGHT_TYPE_PWM 2
+
+struct lfp_backlight_data_entry {
+ u8 type:2;
+ u8 active_low_pwm:1;
+ u8 obsolete1:5;
+ u16 pwm_freq_hz;
+ u8 min_brightness;
+ u8 obsolete2;
+ u8 obsolete3;
+} __packed;
+
+struct lfp_backlight_control_method {
+ u8 type:4;
+ u8 controller:4;
+} __packed;
+
+struct bdb_lfp_backlight_data {
+ u8 entry_size;
+ struct lfp_backlight_data_entry data[16];
+ u8 level[16];
+ struct lfp_backlight_control_method backlight_control[16];
+} __packed;
+
+/*
+ * Block 52 - MIPI Configuration Block
+ */
+
#define MAX_MIPI_CONFIGURATIONS 6
struct bdb_mipi_config {
@@ -888,24 +796,13 @@ struct bdb_mipi_config {
struct mipi_pps_data pps[MAX_MIPI_CONFIGURATIONS];
} __packed;
-/* Block 53 contains MIPI sequences as needed by the panel
- * for enabling it. This block can be variable in size and
- * can be maximum of 6 blocks
+/*
+ * Block 53 - MIPI Sequence Block
*/
+
struct bdb_mipi_sequence {
u8 version;
- u8 data[0];
+ u8 data[0]; /* up to 6 variable length blocks */
} __packed;
-enum mipi_gpio_pin_index {
- MIPI_GPIO_UNDEFINED = 0,
- MIPI_GPIO_PANEL_ENABLE,
- MIPI_GPIO_BL_ENABLE,
- MIPI_GPIO_PWM_ENABLE,
- MIPI_GPIO_RESET_N,
- MIPI_GPIO_PWR_DOWN_R,
- MIPI_GPIO_STDBY_RST_N,
- MIPI_GPIO_MAX
-};
-
#endif /* _INTEL_VBT_DEFS_H_ */
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [igt-dev] [PATCH i-g-t] tools/intel_vbt_decode: update vbt defs from kernel 2019-06-05 12:33 [igt-dev] [PATCH i-g-t] tools/intel_vbt_decode: update vbt defs from kernel Jani Nikula @ 2019-06-05 12:57 ` Ville Syrjälä 2019-06-05 13:22 ` Jani Nikula 2019-06-05 13:49 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork 2019-06-06 20:28 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 2 siblings, 1 reply; 5+ messages in thread From: Ville Syrjälä @ 2019-06-05 12:57 UTC (permalink / raw) To: Jani Nikula; +Cc: igt-dev On Wed, Jun 05, 2019 at 03:33:00PM +0300, Jani Nikula wrote: > Sync up to commit f41c615310d2 ("drm/i915/bios: add an enum for BDB > block IDs") in kernel intel_vbt_defs.h, and update the tool with the > struct renames. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > tools/intel_vbt_decode.c | 6 +- > tools/intel_vbt_defs.h | 657 +++++++++++++++++---------------------- > 2 files changed, 280 insertions(+), 383 deletions(-) > > diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c > index d80b1dae7725..38eccc48f38b 100644 > --- a/tools/intel_vbt_decode.c > +++ b/tools/intel_vbt_decode.c > @@ -228,7 +228,7 @@ static void dump_backlight_info(struct context *context, > const struct bdb_block *block) > { > const struct bdb_lfp_backlight_data *backlight = block->data; > - const struct bdb_lfp_backlight_data_entry *blc; > + const struct lfp_backlight_data_entry *blc; > > if (sizeof(*blc) != backlight->entry_size) { > printf("\tBacklight struct sizes don't match (expected %zu, got %u), skipping\n", > @@ -629,8 +629,8 @@ static void dump_lvds_data(struct context *context, > const uint8_t *lfp_data_ptr = > (const uint8_t *) lvds_data->data + lfp_data_size * i; > const uint8_t *timing_data = lfp_data_ptr + dvo_offset; > - const struct bdb_lvds_lfp_data_entry *lfp_data = > - (const struct bdb_lvds_lfp_data_entry *)lfp_data_ptr; > + const struct lvds_lfp_data_entry *lfp_data = > + (const struct lvds_lfp_data_entry *)lfp_data_ptr; > char marker; > > if (i != context->panel_type && !context->dump_all_panel_types) > diff --git a/tools/intel_vbt_defs.h b/tools/intel_vbt_defs.h > index 3f5eff49105b..89ef14cafb6b 100644 > --- a/tools/intel_vbt_defs.h > +++ b/tools/intel_vbt_defs.h > @@ -75,65 +75,51 @@ struct bdb_header { > u16 bdb_size; > } __packed; > > -/* strictly speaking, this is a "skip" block, but it has interesting info */ > -struct vbios_data { > - u8 type; /* 0 == desktop, 1 == mobile */ > - u8 relstage; > - u8 chipset; > - u8 lvds_present:1; > - u8 tv_present:1; > - u8 rsvd2:6; /* finish byte */ > - u8 rsvd3[4]; > - u8 signon[155]; > - u8 copyright[61]; > - u16 code_segment; > - u8 dos_boot_mode; > - u8 bandwidth_percent; > - u8 rsvd4; /* popup memory size */ > - u8 resize_pci_bios; > - u8 rsvd5; /* is crt already on ddc2 */ > -} __packed; > - > /* > * There are several types of BIOS data blocks (BDBs), each block has > * an ID and size in the first 3 bytes (ID in first, size in next 2). > * Known types are listed below. > */ > -#define BDB_GENERAL_FEATURES 1 > -#define BDB_GENERAL_DEFINITIONS 2 > -#define BDB_OLD_TOGGLE_LIST 3 > -#define BDB_MODE_SUPPORT_LIST 4 > -#define BDB_GENERIC_MODE_TABLE 5 > -#define BDB_EXT_MMIO_REGS 6 > -#define BDB_SWF_IO 7 > -#define BDB_SWF_MMIO 8 > -#define BDB_PSR 9 > -#define BDB_MODE_REMOVAL_TABLE 10 > -#define BDB_CHILD_DEVICE_TABLE 11 > -#define BDB_DRIVER_FEATURES 12 > -#define BDB_DRIVER_PERSISTENCE 13 > -#define BDB_EXT_TABLE_PTRS 14 > -#define BDB_DOT_CLOCK_OVERRIDE 15 > -#define BDB_DISPLAY_SELECT 16 > -/* 17 rsvd */ > -#define BDB_DRIVER_ROTATION 18 > -#define BDB_DISPLAY_REMOVE 19 > -#define BDB_OEM_CUSTOM 20 > -#define BDB_EFP_LIST 21 /* workarounds for VGA hsync/vsync */ > -#define BDB_SDVO_LVDS_OPTIONS 22 > -#define BDB_SDVO_PANEL_DTDS 23 > -#define BDB_SDVO_LVDS_PNP_IDS 24 > -#define BDB_SDVO_LVDS_POWER_SEQ 25 > -#define BDB_TV_OPTIONS 26 > -#define BDB_EDP 27 > -#define BDB_LVDS_OPTIONS 40 > -#define BDB_LVDS_LFP_DATA_PTRS 41 > -#define BDB_LVDS_LFP_DATA 42 > -#define BDB_LVDS_BACKLIGHT 43 > -#define BDB_LVDS_POWER 44 > -#define BDB_MIPI_CONFIG 52 > -#define BDB_MIPI_SEQUENCE 53 > -#define BDB_SKIP 254 /* VBIOS private block, ignore */ > +enum bdb_block_id { > + BDB_GENERAL_FEATURES = 1, > + BDB_GENERAL_DEFINITIONS = 2, > + BDB_OLD_TOGGLE_LIST = 3, > + BDB_MODE_SUPPORT_LIST = 4, > + BDB_GENERIC_MODE_TABLE = 5, > + BDB_EXT_MMIO_REGS = 6, > + BDB_SWF_IO = 7, > + BDB_SWF_MMIO = 8, > + BDB_PSR = 9, > + BDB_MODE_REMOVAL_TABLE = 10, > + BDB_CHILD_DEVICE_TABLE = 11, > + BDB_DRIVER_FEATURES = 12, > + BDB_DRIVER_PERSISTENCE = 13, > + BDB_EXT_TABLE_PTRS = 14, > + BDB_DOT_CLOCK_OVERRIDE = 15, > + BDB_DISPLAY_SELECT = 16, > + BDB_DRIVER_ROTATION = 18, > + BDB_DISPLAY_REMOVE = 19, > + BDB_OEM_CUSTOM = 20, > + BDB_EFP_LIST = 21, /* workarounds for VGA hsync/vsync */ > + BDB_SDVO_LVDS_OPTIONS = 22, > + BDB_SDVO_PANEL_DTDS = 23, > + BDB_SDVO_LVDS_PNP_IDS = 24, > + BDB_SDVO_LVDS_POWER_SEQ = 25, > + BDB_TV_OPTIONS = 26, > + BDB_EDP = 27, > + BDB_LVDS_OPTIONS = 40, > + BDB_LVDS_LFP_DATA_PTRS = 41, > + BDB_LVDS_LFP_DATA = 42, > + BDB_LVDS_BACKLIGHT = 43, > + BDB_LVDS_POWER = 44, > + BDB_MIPI_CONFIG = 52, > + BDB_MIPI_SEQUENCE = 53, > + BDB_SKIP = 254, /* VBIOS private block, ignore */ > +}; > + > +/* > + * Block 1 - General Bit Definitions > + */ > > struct bdb_general_features { > /* bits 1 */ > @@ -176,6 +162,10 @@ struct bdb_general_features { > u8 rsvd11:2; /* finish byte */ > } __packed; > > +/* > + * Block 2 - General Bytes Definition > + */ > + > /* pre-915 */ > #define GPIO_PIN_DVI_LVDS 0x03 /* "DVI/LVDS DDC GPIO pins" */ > #define GPIO_PIN_ADD_I2C 0x05 /* "ADDCARD I2C GPIO pins" */ > @@ -299,6 +289,8 @@ struct bdb_general_features { > #define DVO_PORT_DPA 10 > #define DVO_PORT_DPE 11 /* 193 */ > #define DVO_PORT_HDMIE 12 /* 193 */ > +#define DVO_PORT_DPF 13 /* N/A */ > +#define DVO_PORT_HDMIF 14 /* N/A */ > #define DVO_PORT_MIPIA 21 /* 171 */ > #define DVO_PORT_MIPIB 22 /* 171 */ > #define DVO_PORT_MIPIC 23 /* 171 */ > @@ -316,8 +308,26 @@ enum vbt_gmbus_ddi { > DDC_BUS_DDI_C, > DDC_BUS_DDI_D, > DDC_BUS_DDI_F, > + ICL_DDC_BUS_DDI_A = 0x1, > + ICL_DDC_BUS_DDI_B, > + ICL_DDC_BUS_PORT_1 = 0x4, > + ICL_DDC_BUS_PORT_2, > + ICL_DDC_BUS_PORT_3, > + ICL_DDC_BUS_PORT_4, > }; > > +#define DP_AUX_A 0x40 > +#define DP_AUX_B 0x10 > +#define DP_AUX_C 0x20 > +#define DP_AUX_D 0x30 > +#define DP_AUX_E 0x50 > +#define DP_AUX_F 0x60 > + > +#define VBT_DP_MAX_LINK_RATE_HBR3 0 > +#define VBT_DP_MAX_LINK_RATE_HBR2 1 > +#define VBT_DP_MAX_LINK_RATE_HBR 2 > +#define VBT_DP_MAX_LINK_RATE_LBR 3 > + > /* > * The child device config, aka the display device data structure, provides a > * description of a port and its configuration on the platform. > @@ -382,7 +392,8 @@ struct child_device_config { > u8 lspcon:1; /* 192 */ > u8 iboost:1; /* 196 */ > u8 hpd_invert:1; /* 196 */ > - u8 flag_reserved:3; > + u8 use_vbt_vswing:1; /* 218 */ > + u8 flag_reserved:2; > u8 hdmi_support:1; /* 158 */ > u8 dp_support:1; /* 158 */ > u8 tmds_support:1; /* 158 */ > @@ -407,7 +418,9 @@ struct child_device_config { > u16 extended_type; > u8 dvo_function; > u8 dp_usb_type_c:1; /* 195 */ > - u8 flags2_reserved:7; /* 195 */ > + u8 tbt:1; /* 209 */ > + u8 flags2_reserved:2; /* 195 */ > + u8 dp_port_trace_length:4; /* 209 */ > u8 dp_gpio_index; /* 195 */ > u16 dp_gpio_pin_num; /* 195 */ > u8 dp_iboost_level:4; /* 196 */ > @@ -441,194 +454,44 @@ struct bdb_general_definitions { > * number = (block_size - sizeof(bdb_general_definitions))/ > * defs->child_dev_size; > */ > - uint8_t devices[0]; > -} __packed; > - > -/* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */ > -#define MODE_MASK 0x3 > - > -struct bdb_lvds_options { > - u8 panel_type; > - u8 rsvd1; > - /* LVDS capabilities, stored in a dword */ > - u8 pfit_mode:2; > - u8 pfit_text_mode_enhanced:1; > - u8 pfit_gfx_mode_enhanced:1; > - u8 pfit_ratio_auto:1; > - u8 pixel_dither:1; > - u8 lvds_edid:1; > - u8 rsvd2:1; > - u8 rsvd4; > - /* LVDS Panel channel bits stored here */ > - u32 lvds_panel_channel_bits; > - /* LVDS SSC (Spread Spectrum Clock) bits stored here. */ > - u16 ssc_bits; > - u16 ssc_freq; > - u16 ssc_ddt; > - /* Panel color depth defined here */ > - u16 panel_color_depth; > - /* LVDS panel type bits stored here */ > - u32 dps_panel_type_bits; > - /* LVDS backlight control type bits stored here */ > - u32 blt_control_type_bits; > -} __packed; > - > -/* LFP pointer table contains entries to the struct below */ > -struct bdb_lvds_lfp_data_ptr { > - u16 fp_timing_offset; /* offsets are from start of bdb */ > - u8 fp_table_size; > - u16 dvo_timing_offset; > - u8 dvo_table_size; > - u16 panel_pnp_id_offset; > - u8 pnp_table_size; > -} __packed; > - > -struct bdb_lvds_lfp_data_ptrs { > - u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */ > - struct bdb_lvds_lfp_data_ptr ptr[16]; > -} __packed; > - > -/* LFP data has 3 blocks per entry */ > -struct lvds_fp_timing { > - u16 x_res; > - u16 y_res; > - u32 lvds_reg; > - u32 lvds_reg_val; > - u32 pp_on_reg; > - u32 pp_on_reg_val; > - u32 pp_off_reg; > - u32 pp_off_reg_val; > - u32 pp_cycle_reg; > - u32 pp_cycle_reg_val; > - u32 pfit_reg; > - u32 pfit_reg_val; > - u16 terminator; > + u8 devices[0]; > } __packed; > > -struct lvds_dvo_timing { > - u16 clock; /**< In 10khz */ > - u8 hactive_lo; > - u8 hblank_lo; > - u8 hblank_hi:4; > - u8 hactive_hi:4; > - u8 vactive_lo; > - u8 vblank_lo; > - u8 vblank_hi:4; > - u8 vactive_hi:4; > - u8 hsync_off_lo; > - u8 hsync_pulse_width_lo; > - u8 vsync_pulse_width_lo:4; > - u8 vsync_off_lo:4; > - u8 vsync_pulse_width_hi:2; > - u8 vsync_off_hi:2; > - u8 hsync_pulse_width_hi:2; > - u8 hsync_off_hi:2; > - u8 himage_lo; > - u8 vimage_lo; > - u8 vimage_hi:4; > - u8 himage_hi:4; > - u8 h_border; > - u8 v_border; > - u8 rsvd1:3; > - u8 digital:2; > - u8 vsync_positive:1; > - u8 hsync_positive:1; > - u8 non_interlaced:1; > -} __packed; > - > -struct lvds_pnp_id { > - u16 mfg_name; > - u16 product_code; > - u32 serial; > - u8 mfg_week; > - u8 mfg_year; > -} __packed; > - > -struct bdb_lvds_lfp_data_entry { > - struct lvds_fp_timing fp_timing; > - struct lvds_dvo_timing dvo_timing; > - struct lvds_pnp_id pnp_id; > -} __packed; > - > -struct bdb_lvds_lfp_data { > - struct bdb_lvds_lfp_data_entry data[16]; > -} __packed; > - > -#define BDB_BACKLIGHT_TYPE_NONE 0 > -#define BDB_BACKLIGHT_TYPE_PWM 2 > - > -struct bdb_lfp_backlight_data_entry { > - u8 type:2; > - u8 active_low_pwm:1; > - u8 obsolete1:5; > - u16 pwm_freq_hz; > - u8 min_brightness; > - u8 obsolete2; > - u8 obsolete3; > -} __packed; > - > -struct bdb_lfp_backlight_control_method { > - u8 type:4; > - u8 controller:4; > -} __packed; > - > -struct bdb_lfp_backlight_data { > - u8 entry_size; > - struct bdb_lfp_backlight_data_entry data[16]; > - u8 level[16]; > - struct bdb_lfp_backlight_control_method backlight_control[16]; > -} __packed; > +/* > + * Block 9 - SRD Feature Block > + */ > > -struct aimdb_header { > - char signature[16]; > - char oem_device[20]; > - u16 aimdb_version; > - u16 aimdb_header_size; > - u16 aimdb_size; > -} __packed; > +struct psr_table { > + /* Feature bits */ > + u8 full_link:1; > + u8 require_aux_to_wakeup:1; > + u8 feature_bits_rsvd:6; > > -struct aimdb_block { > - u8 aimdb_id; > - u16 aimdb_size; > -} __packed; > + /* Wait times */ > + u8 idle_frames:4; > + u8 lines_to_wait:3; > + u8 wait_times_rsvd:1; > > -struct vch_panel_data { > - u16 fp_timing_offset; > - u8 fp_timing_size; > - u16 dvo_timing_offset; > - u8 dvo_timing_size; > - u16 text_fitting_offset; > - u8 text_fitting_size; > - u16 graphics_fitting_offset; > - u8 graphics_fitting_size; > -} __packed; > + /* TP wake up time in multiple of 100 */ > + u16 tp1_wakeup_time; > + u16 tp2_tp3_wakeup_time; > > -struct vch_bdb_22 { > - struct aimdb_block aimdb_block; > - struct vch_panel_data panels[16]; > + /* PSR2 TP2/TP3 wakeup time for 16 panels */ > + u32 psr2_tp2_tp3_wakeup_time; > } __packed; > > -struct bdb_sdvo_lvds_options { > - u8 panel_backlight; > - u8 h40_set_panel_type; > - u8 panel_type; > - u8 ssc_clk_freq; > - u16 als_low_trip; > - u16 als_high_trip; > - u8 sclalarcoeff_tab_row_num; > - u8 sclalarcoeff_tab_row_size; > - u8 coefficient[8]; > - u8 panel_misc_bits_1; > - u8 panel_misc_bits_2; > - u8 panel_misc_bits_3; > - u8 panel_misc_bits_4; > +struct bdb_psr { > + struct psr_table psr_table[16]; > } __packed; > > +/* > + * Block 12 - Driver Features Data Block > + */ > > #define BDB_DRIVER_FEATURE_NO_LVDS 0 > #define BDB_DRIVER_FEATURE_INT_LVDS 1 > #define BDB_DRIVER_FEATURE_SDVO_LVDS 2 > -#define BDB_DRIVER_FEATURE_EDP 3 > +#define BDB_DRIVER_FEATURE_INT_SDVO_LVDS 3 > > struct bdb_driver_features { > u8 boot_dev_algorithm:1; > @@ -684,6 +547,69 @@ struct bdb_driver_features { > u16 pc_feature_valid:1; > } __packed; > > +/* > + * Block 22 - SDVO LVDS General Options > + */ > + > +struct bdb_sdvo_lvds_options { > + u8 panel_backlight; > + u8 h40_set_panel_type; > + u8 panel_type; > + u8 ssc_clk_freq; > + u16 als_low_trip; > + u16 als_high_trip; > + u8 sclalarcoeff_tab_row_num; > + u8 sclalarcoeff_tab_row_size; > + u8 coefficient[8]; > + u8 panel_misc_bits_1; > + u8 panel_misc_bits_2; > + u8 panel_misc_bits_3; > + u8 panel_misc_bits_4; > +} __packed; > + > +/* > + * Block 23 - SDVO LVDS Panel DTDs > + */ > + > +struct lvds_dvo_timing { > + u16 clock; /**< In 10khz */ > + u8 hactive_lo; > + u8 hblank_lo; > + u8 hblank_hi:4; > + u8 hactive_hi:4; > + u8 vactive_lo; > + u8 vblank_lo; > + u8 vblank_hi:4; > + u8 vactive_hi:4; > + u8 hsync_off_lo; > + u8 hsync_pulse_width_lo; > + u8 vsync_pulse_width_lo:4; > + u8 vsync_off_lo:4; > + u8 vsync_pulse_width_hi:2; > + u8 vsync_off_hi:2; > + u8 hsync_pulse_width_hi:2; > + u8 hsync_off_hi:2; > + u8 himage_lo; > + u8 vimage_lo; > + u8 vimage_hi:4; > + u8 himage_hi:4; > + u8 h_border; > + u8 v_border; > + u8 rsvd1:3; > + u8 digital:2; > + u8 vsync_positive:1; > + u8 hsync_positive:1; > + u8 non_interlaced:1; > +} __packed; > + > +struct bdb_sdvo_panel_dtds { > + struct lvds_dvo_timing dtds[4]; > +} __packed; > + > +/* > + * Block 27 - eDP VBT Block > + */ > + > #define EDP_18BPP 0 > #define EDP_24BPP 1 > #define EDP_30BPP 2 > @@ -736,151 +662,133 @@ struct bdb_edp { > struct edp_full_link_params full_link_params[16]; /* 199 */ > } __packed; > > -struct psr_table { > - /* Feature bits */ > - u8 full_link:1; > - u8 require_aux_to_wakeup:1; > - u8 feature_bits_rsvd:6; > +/* > + * Block 40 - LFP Data Block > + */ > > - /* Wait times */ > - u8 idle_frames:4; > - u8 lines_to_wait:3; > - u8 wait_times_rsvd:1; > +/* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */ > +#define MODE_MASK 0x3 > > - /* TP wake up time in multiple of 100 */ > - u16 tp1_wakeup_time; > - u16 tp2_tp3_wakeup_time; > +struct bdb_lvds_options { > + u8 panel_type; > + u8 panel_type2; /* 212 */ > + /* LVDS capabilities, stored in a dword */ > + u8 pfit_mode:2; > + u8 pfit_text_mode_enhanced:1; > + u8 pfit_gfx_mode_enhanced:1; > + u8 pfit_ratio_auto:1; > + u8 pixel_dither:1; > + u8 lvds_edid:1; > + u8 rsvd2:1; > + u8 rsvd4; > + /* LVDS Panel channel bits stored here */ > + u32 lvds_panel_channel_bits; > + /* LVDS SSC (Spread Spectrum Clock) bits stored here. */ > + u16 ssc_bits; > + u16 ssc_freq; > + u16 ssc_ddt; > + /* Panel color depth defined here */ > + u16 panel_color_depth; > + /* LVDS panel type bits stored here */ > + u32 dps_panel_type_bits; > + /* LVDS backlight control type bits stored here */ > + u32 blt_control_type_bits; > + > + u16 lcdvcc_s0_enable; /* 200 */ > + u32 rotation; /* 228 */ > } __packed; > > -struct bdb_psr { > - struct psr_table psr_table[16]; > +/* > + * Block 41 - LFP Data Table Pointers > + */ > + > +/* LFP pointer table contains entries to the struct below */ > +struct lvds_lfp_data_ptr { > + u16 fp_timing_offset; /* offsets are from start of bdb */ > + u8 fp_table_size; > + u16 dvo_timing_offset; > + u8 dvo_table_size; > + u16 panel_pnp_id_offset; > + u8 pnp_table_size; > +} __packed; > + > +struct bdb_lvds_lfp_data_ptrs { > + u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */ > + struct lvds_lfp_data_ptr ptr[16]; > } __packed; > > /* > - * Driver<->VBIOS interaction occurs through scratch bits in > - * GR18 & SWF*. > + * Block 42 - LFP Data Tables > */ > > -/* GR18 bits are set on display switch and hotkey events */ > -#define GR18_DRIVER_SWITCH_EN (1<<7) /* 0: VBIOS control, 1: driver control */ > -#define GR18_HOTKEY_MASK 0x78 /* See also SWF4 15:0 */ > -#define GR18_HK_NONE (0x0<<3) > -#define GR18_HK_LFP_STRETCH (0x1<<3) > -#define GR18_HK_TOGGLE_DISP (0x2<<3) > -#define GR18_HK_DISP_SWITCH (0x4<<3) /* see SWF14 15:0 for what to enable */ > -#define GR18_HK_POPUP_DISABLED (0x6<<3) > -#define GR18_HK_POPUP_ENABLED (0x7<<3) > -#define GR18_HK_PFIT (0x8<<3) > -#define GR18_HK_APM_CHANGE (0xa<<3) > -#define GR18_HK_MULTIPLE (0xc<<3) > -#define GR18_USER_INT_EN (1<<2) > -#define GR18_A0000_FLUSH_EN (1<<1) > -#define GR18_SMM_EN (1<<0) > - > -/* Set by driver, cleared by VBIOS */ > -#define SWF00_YRES_SHIFT 16 > -#define SWF00_XRES_SHIFT 0 > -#define SWF00_RES_MASK 0xffff > - > -/* Set by VBIOS at boot time and driver at runtime */ > -#define SWF01_TV2_FORMAT_SHIFT 8 > -#define SWF01_TV1_FORMAT_SHIFT 0 > -#define SWF01_TV_FORMAT_MASK 0xffff > - > -#define SWF10_VBIOS_BLC_I2C_EN (1<<29) > -#define SWF10_GTT_OVERRIDE_EN (1<<28) > -#define SWF10_LFP_DPMS_OVR (1<<27) /* override DPMS on display switch */ > -#define SWF10_ACTIVE_TOGGLE_LIST_MASK (7<<24) > -#define SWF10_OLD_TOGGLE 0x0 > -#define SWF10_TOGGLE_LIST_1 0x1 > -#define SWF10_TOGGLE_LIST_2 0x2 > -#define SWF10_TOGGLE_LIST_3 0x3 > -#define SWF10_TOGGLE_LIST_4 0x4 > -#define SWF10_PANNING_EN (1<<23) > -#define SWF10_DRIVER_LOADED (1<<22) > -#define SWF10_EXTENDED_DESKTOP (1<<21) > -#define SWF10_EXCLUSIVE_MODE (1<<20) > -#define SWF10_OVERLAY_EN (1<<19) > -#define SWF10_PLANEB_HOLDOFF (1<<18) > -#define SWF10_PLANEA_HOLDOFF (1<<17) > -#define SWF10_VGA_HOLDOFF (1<<16) > -#define SWF10_ACTIVE_DISP_MASK 0xffff > -#define SWF10_PIPEB_LFP2 (1<<15) > -#define SWF10_PIPEB_EFP2 (1<<14) > -#define SWF10_PIPEB_TV2 (1<<13) > -#define SWF10_PIPEB_CRT2 (1<<12) > -#define SWF10_PIPEB_LFP (1<<11) > -#define SWF10_PIPEB_EFP (1<<10) > -#define SWF10_PIPEB_TV (1<<9) > -#define SWF10_PIPEB_CRT (1<<8) > -#define SWF10_PIPEA_LFP2 (1<<7) > -#define SWF10_PIPEA_EFP2 (1<<6) > -#define SWF10_PIPEA_TV2 (1<<5) > -#define SWF10_PIPEA_CRT2 (1<<4) > -#define SWF10_PIPEA_LFP (1<<3) > -#define SWF10_PIPEA_EFP (1<<2) > -#define SWF10_PIPEA_TV (1<<1) > -#define SWF10_PIPEA_CRT (1<<0) > - > -#define SWF11_MEMORY_SIZE_SHIFT 16 > -#define SWF11_SV_TEST_EN (1<<15) > -#define SWF11_IS_AGP (1<<14) > -#define SWF11_DISPLAY_HOLDOFF (1<<13) > -#define SWF11_DPMS_REDUCED (1<<12) > -#define SWF11_IS_VBE_MODE (1<<11) > -#define SWF11_PIPEB_ACCESS (1<<10) /* 0 here means pipe a */ > -#define SWF11_DPMS_MASK 0x07 > -#define SWF11_DPMS_OFF (1<<2) > -#define SWF11_DPMS_SUSPEND (1<<1) > -#define SWF11_DPMS_STANDBY (1<<0) > -#define SWF11_DPMS_ON 0 > - > -#define SWF14_GFX_PFIT_EN (1<<31) > -#define SWF14_TEXT_PFIT_EN (1<<30) > -#define SWF14_LID_STATUS_CLOSED (1<<29) /* 0 here means open */ > -#define SWF14_POPUP_EN (1<<28) > -#define SWF14_DISPLAY_HOLDOFF (1<<27) > -#define SWF14_DISP_DETECT_EN (1<<26) > -#define SWF14_DOCKING_STATUS_DOCKED (1<<25) /* 0 here means undocked */ > -#define SWF14_DRIVER_STATUS (1<<24) > -#define SWF14_OS_TYPE_WIN9X (1<<23) > -#define SWF14_OS_TYPE_WINNT (1<<22) > -/* 21:19 rsvd */ > -#define SWF14_PM_TYPE_MASK 0x00070000 > -#define SWF14_PM_ACPI_VIDEO (0x4 << 16) > -#define SWF14_PM_ACPI (0x3 << 16) > -#define SWF14_PM_APM_12 (0x2 << 16) > -#define SWF14_PM_APM_11 (0x1 << 16) > -#define SWF14_HK_REQUEST_MASK 0x0000ffff /* see GR18 6:3 for event type */ > - /* if GR18 indicates a display switch */ > -#define SWF14_DS_PIPEB_LFP2_EN (1<<15) > -#define SWF14_DS_PIPEB_EFP2_EN (1<<14) > -#define SWF14_DS_PIPEB_TV2_EN (1<<13) > -#define SWF14_DS_PIPEB_CRT2_EN (1<<12) > -#define SWF14_DS_PIPEB_LFP_EN (1<<11) > -#define SWF14_DS_PIPEB_EFP_EN (1<<10) > -#define SWF14_DS_PIPEB_TV_EN (1<<9) > -#define SWF14_DS_PIPEB_CRT_EN (1<<8) > -#define SWF14_DS_PIPEA_LFP2_EN (1<<7) > -#define SWF14_DS_PIPEA_EFP2_EN (1<<6) > -#define SWF14_DS_PIPEA_TV2_EN (1<<5) > -#define SWF14_DS_PIPEA_CRT2_EN (1<<4) > -#define SWF14_DS_PIPEA_LFP_EN (1<<3) > -#define SWF14_DS_PIPEA_EFP_EN (1<<2) > -#define SWF14_DS_PIPEA_TV_EN (1<<1) > -#define SWF14_DS_PIPEA_CRT_EN (1<<0) > - /* if GR18 indicates a panel fitting request */ > -#define SWF14_PFIT_EN (1<<0) /* 0 means disable */ > - /* if GR18 indicates an APM change request */ > -#define SWF14_APM_HIBERNATE 0x4 > -#define SWF14_APM_SUSPEND 0x3 > -#define SWF14_APM_STANDBY 0x1 > -#define SWF14_APM_RESTORE 0x0 > - > -/* Block 52 contains MIPI configuration block > - * 6 * bdb_mipi_config, followed by 6 pps data block > - * block below > +/* LFP data has 3 blocks per entry */ > +struct lvds_fp_timing { > + u16 x_res; > + u16 y_res; > + u32 lvds_reg; > + u32 lvds_reg_val; > + u32 pp_on_reg; > + u32 pp_on_reg_val; > + u32 pp_off_reg; > + u32 pp_off_reg_val; > + u32 pp_cycle_reg; > + u32 pp_cycle_reg_val; > + u32 pfit_reg; > + u32 pfit_reg_val; > + u16 terminator; > +} __packed; > + > +struct lvds_pnp_id { > + u16 mfg_name; > + u16 product_code; > + u32 serial; > + u8 mfg_week; > + u8 mfg_year; > +} __packed; > + > +struct lvds_lfp_data_entry { > + struct lvds_fp_timing fp_timing; > + struct lvds_dvo_timing dvo_timing; > + struct lvds_pnp_id pnp_id; > +} __packed; > + > +struct bdb_lvds_lfp_data { > + struct lvds_lfp_data_entry data[16]; > +} __packed; > + > +/* > + * Block 43 - LFP Backlight Control Data Block > */ > + > +#define BDB_BACKLIGHT_TYPE_NONE 0 > +#define BDB_BACKLIGHT_TYPE_PWM 2 > + > +struct lfp_backlight_data_entry { > + u8 type:2; > + u8 active_low_pwm:1; > + u8 obsolete1:5; > + u16 pwm_freq_hz; > + u8 min_brightness; > + u8 obsolete2; > + u8 obsolete3; > +} __packed; > + > +struct lfp_backlight_control_method { > + u8 type:4; > + u8 controller:4; > +} __packed; > + > +struct bdb_lfp_backlight_data { > + u8 entry_size; > + struct lfp_backlight_data_entry data[16]; > + u8 level[16]; > + struct lfp_backlight_control_method backlight_control[16]; > +} __packed; > + > +/* > + * Block 52 - MIPI Configuration Block > + */ > + > #define MAX_MIPI_CONFIGURATIONS 6 > > struct bdb_mipi_config { > @@ -888,24 +796,13 @@ struct bdb_mipi_config { > struct mipi_pps_data pps[MAX_MIPI_CONFIGURATIONS]; > } __packed; > > -/* Block 53 contains MIPI sequences as needed by the panel > - * for enabling it. This block can be variable in size and > - * can be maximum of 6 blocks > +/* > + * Block 53 - MIPI Sequence Block > */ > + > struct bdb_mipi_sequence { > u8 version; > - u8 data[0]; > + u8 data[0]; /* up to 6 variable length blocks */ > } __packed; > > -enum mipi_gpio_pin_index { > - MIPI_GPIO_UNDEFINED = 0, > - MIPI_GPIO_PANEL_ENABLE, > - MIPI_GPIO_BL_ENABLE, > - MIPI_GPIO_PWM_ENABLE, > - MIPI_GPIO_RESET_N, > - MIPI_GPIO_PWR_DOWN_R, > - MIPI_GPIO_STDBY_RST_N, > - MIPI_GPIO_MAX > -}; > - > #endif /* _INTEL_VBT_DEFS_H_ */ > -- > 2.20.1 > > _______________________________________________ > igt-dev mailing list > igt-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/igt-dev -- Ville Syrjälä Intel _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tools/intel_vbt_decode: update vbt defs from kernel 2019-06-05 12:57 ` Ville Syrjälä @ 2019-06-05 13:22 ` Jani Nikula 0 siblings, 0 replies; 5+ messages in thread From: Jani Nikula @ 2019-06-05 13:22 UTC (permalink / raw) To: Ville Syrjälä; +Cc: igt-dev On Wed, 05 Jun 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote: > On Wed, Jun 05, 2019 at 03:33:00PM +0300, Jani Nikula wrote: >> Sync up to commit f41c615310d2 ("drm/i915/bios: add an enum for BDB >> block IDs") in kernel intel_vbt_defs.h, and update the tool with the >> struct renames. >> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> > > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Thanks, pushed. BR, Jani. > >> --- >> tools/intel_vbt_decode.c | 6 +- >> tools/intel_vbt_defs.h | 657 +++++++++++++++++---------------------- >> 2 files changed, 280 insertions(+), 383 deletions(-) >> >> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c >> index d80b1dae7725..38eccc48f38b 100644 >> --- a/tools/intel_vbt_decode.c >> +++ b/tools/intel_vbt_decode.c >> @@ -228,7 +228,7 @@ static void dump_backlight_info(struct context *context, >> const struct bdb_block *block) >> { >> const struct bdb_lfp_backlight_data *backlight = block->data; >> - const struct bdb_lfp_backlight_data_entry *blc; >> + const struct lfp_backlight_data_entry *blc; >> >> if (sizeof(*blc) != backlight->entry_size) { >> printf("\tBacklight struct sizes don't match (expected %zu, got %u), skipping\n", >> @@ -629,8 +629,8 @@ static void dump_lvds_data(struct context *context, >> const uint8_t *lfp_data_ptr = >> (const uint8_t *) lvds_data->data + lfp_data_size * i; >> const uint8_t *timing_data = lfp_data_ptr + dvo_offset; >> - const struct bdb_lvds_lfp_data_entry *lfp_data = >> - (const struct bdb_lvds_lfp_data_entry *)lfp_data_ptr; >> + const struct lvds_lfp_data_entry *lfp_data = >> + (const struct lvds_lfp_data_entry *)lfp_data_ptr; >> char marker; >> >> if (i != context->panel_type && !context->dump_all_panel_types) >> diff --git a/tools/intel_vbt_defs.h b/tools/intel_vbt_defs.h >> index 3f5eff49105b..89ef14cafb6b 100644 >> --- a/tools/intel_vbt_defs.h >> +++ b/tools/intel_vbt_defs.h >> @@ -75,65 +75,51 @@ struct bdb_header { >> u16 bdb_size; >> } __packed; >> >> -/* strictly speaking, this is a "skip" block, but it has interesting info */ >> -struct vbios_data { >> - u8 type; /* 0 == desktop, 1 == mobile */ >> - u8 relstage; >> - u8 chipset; >> - u8 lvds_present:1; >> - u8 tv_present:1; >> - u8 rsvd2:6; /* finish byte */ >> - u8 rsvd3[4]; >> - u8 signon[155]; >> - u8 copyright[61]; >> - u16 code_segment; >> - u8 dos_boot_mode; >> - u8 bandwidth_percent; >> - u8 rsvd4; /* popup memory size */ >> - u8 resize_pci_bios; >> - u8 rsvd5; /* is crt already on ddc2 */ >> -} __packed; >> - >> /* >> * There are several types of BIOS data blocks (BDBs), each block has >> * an ID and size in the first 3 bytes (ID in first, size in next 2). >> * Known types are listed below. >> */ >> -#define BDB_GENERAL_FEATURES 1 >> -#define BDB_GENERAL_DEFINITIONS 2 >> -#define BDB_OLD_TOGGLE_LIST 3 >> -#define BDB_MODE_SUPPORT_LIST 4 >> -#define BDB_GENERIC_MODE_TABLE 5 >> -#define BDB_EXT_MMIO_REGS 6 >> -#define BDB_SWF_IO 7 >> -#define BDB_SWF_MMIO 8 >> -#define BDB_PSR 9 >> -#define BDB_MODE_REMOVAL_TABLE 10 >> -#define BDB_CHILD_DEVICE_TABLE 11 >> -#define BDB_DRIVER_FEATURES 12 >> -#define BDB_DRIVER_PERSISTENCE 13 >> -#define BDB_EXT_TABLE_PTRS 14 >> -#define BDB_DOT_CLOCK_OVERRIDE 15 >> -#define BDB_DISPLAY_SELECT 16 >> -/* 17 rsvd */ >> -#define BDB_DRIVER_ROTATION 18 >> -#define BDB_DISPLAY_REMOVE 19 >> -#define BDB_OEM_CUSTOM 20 >> -#define BDB_EFP_LIST 21 /* workarounds for VGA hsync/vsync */ >> -#define BDB_SDVO_LVDS_OPTIONS 22 >> -#define BDB_SDVO_PANEL_DTDS 23 >> -#define BDB_SDVO_LVDS_PNP_IDS 24 >> -#define BDB_SDVO_LVDS_POWER_SEQ 25 >> -#define BDB_TV_OPTIONS 26 >> -#define BDB_EDP 27 >> -#define BDB_LVDS_OPTIONS 40 >> -#define BDB_LVDS_LFP_DATA_PTRS 41 >> -#define BDB_LVDS_LFP_DATA 42 >> -#define BDB_LVDS_BACKLIGHT 43 >> -#define BDB_LVDS_POWER 44 >> -#define BDB_MIPI_CONFIG 52 >> -#define BDB_MIPI_SEQUENCE 53 >> -#define BDB_SKIP 254 /* VBIOS private block, ignore */ >> +enum bdb_block_id { >> + BDB_GENERAL_FEATURES = 1, >> + BDB_GENERAL_DEFINITIONS = 2, >> + BDB_OLD_TOGGLE_LIST = 3, >> + BDB_MODE_SUPPORT_LIST = 4, >> + BDB_GENERIC_MODE_TABLE = 5, >> + BDB_EXT_MMIO_REGS = 6, >> + BDB_SWF_IO = 7, >> + BDB_SWF_MMIO = 8, >> + BDB_PSR = 9, >> + BDB_MODE_REMOVAL_TABLE = 10, >> + BDB_CHILD_DEVICE_TABLE = 11, >> + BDB_DRIVER_FEATURES = 12, >> + BDB_DRIVER_PERSISTENCE = 13, >> + BDB_EXT_TABLE_PTRS = 14, >> + BDB_DOT_CLOCK_OVERRIDE = 15, >> + BDB_DISPLAY_SELECT = 16, >> + BDB_DRIVER_ROTATION = 18, >> + BDB_DISPLAY_REMOVE = 19, >> + BDB_OEM_CUSTOM = 20, >> + BDB_EFP_LIST = 21, /* workarounds for VGA hsync/vsync */ >> + BDB_SDVO_LVDS_OPTIONS = 22, >> + BDB_SDVO_PANEL_DTDS = 23, >> + BDB_SDVO_LVDS_PNP_IDS = 24, >> + BDB_SDVO_LVDS_POWER_SEQ = 25, >> + BDB_TV_OPTIONS = 26, >> + BDB_EDP = 27, >> + BDB_LVDS_OPTIONS = 40, >> + BDB_LVDS_LFP_DATA_PTRS = 41, >> + BDB_LVDS_LFP_DATA = 42, >> + BDB_LVDS_BACKLIGHT = 43, >> + BDB_LVDS_POWER = 44, >> + BDB_MIPI_CONFIG = 52, >> + BDB_MIPI_SEQUENCE = 53, >> + BDB_SKIP = 254, /* VBIOS private block, ignore */ >> +}; >> + >> +/* >> + * Block 1 - General Bit Definitions >> + */ >> >> struct bdb_general_features { >> /* bits 1 */ >> @@ -176,6 +162,10 @@ struct bdb_general_features { >> u8 rsvd11:2; /* finish byte */ >> } __packed; >> >> +/* >> + * Block 2 - General Bytes Definition >> + */ >> + >> /* pre-915 */ >> #define GPIO_PIN_DVI_LVDS 0x03 /* "DVI/LVDS DDC GPIO pins" */ >> #define GPIO_PIN_ADD_I2C 0x05 /* "ADDCARD I2C GPIO pins" */ >> @@ -299,6 +289,8 @@ struct bdb_general_features { >> #define DVO_PORT_DPA 10 >> #define DVO_PORT_DPE 11 /* 193 */ >> #define DVO_PORT_HDMIE 12 /* 193 */ >> +#define DVO_PORT_DPF 13 /* N/A */ >> +#define DVO_PORT_HDMIF 14 /* N/A */ >> #define DVO_PORT_MIPIA 21 /* 171 */ >> #define DVO_PORT_MIPIB 22 /* 171 */ >> #define DVO_PORT_MIPIC 23 /* 171 */ >> @@ -316,8 +308,26 @@ enum vbt_gmbus_ddi { >> DDC_BUS_DDI_C, >> DDC_BUS_DDI_D, >> DDC_BUS_DDI_F, >> + ICL_DDC_BUS_DDI_A = 0x1, >> + ICL_DDC_BUS_DDI_B, >> + ICL_DDC_BUS_PORT_1 = 0x4, >> + ICL_DDC_BUS_PORT_2, >> + ICL_DDC_BUS_PORT_3, >> + ICL_DDC_BUS_PORT_4, >> }; >> >> +#define DP_AUX_A 0x40 >> +#define DP_AUX_B 0x10 >> +#define DP_AUX_C 0x20 >> +#define DP_AUX_D 0x30 >> +#define DP_AUX_E 0x50 >> +#define DP_AUX_F 0x60 >> + >> +#define VBT_DP_MAX_LINK_RATE_HBR3 0 >> +#define VBT_DP_MAX_LINK_RATE_HBR2 1 >> +#define VBT_DP_MAX_LINK_RATE_HBR 2 >> +#define VBT_DP_MAX_LINK_RATE_LBR 3 >> + >> /* >> * The child device config, aka the display device data structure, provides a >> * description of a port and its configuration on the platform. >> @@ -382,7 +392,8 @@ struct child_device_config { >> u8 lspcon:1; /* 192 */ >> u8 iboost:1; /* 196 */ >> u8 hpd_invert:1; /* 196 */ >> - u8 flag_reserved:3; >> + u8 use_vbt_vswing:1; /* 218 */ >> + u8 flag_reserved:2; >> u8 hdmi_support:1; /* 158 */ >> u8 dp_support:1; /* 158 */ >> u8 tmds_support:1; /* 158 */ >> @@ -407,7 +418,9 @@ struct child_device_config { >> u16 extended_type; >> u8 dvo_function; >> u8 dp_usb_type_c:1; /* 195 */ >> - u8 flags2_reserved:7; /* 195 */ >> + u8 tbt:1; /* 209 */ >> + u8 flags2_reserved:2; /* 195 */ >> + u8 dp_port_trace_length:4; /* 209 */ >> u8 dp_gpio_index; /* 195 */ >> u16 dp_gpio_pin_num; /* 195 */ >> u8 dp_iboost_level:4; /* 196 */ >> @@ -441,194 +454,44 @@ struct bdb_general_definitions { >> * number = (block_size - sizeof(bdb_general_definitions))/ >> * defs->child_dev_size; >> */ >> - uint8_t devices[0]; >> -} __packed; >> - >> -/* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */ >> -#define MODE_MASK 0x3 >> - >> -struct bdb_lvds_options { >> - u8 panel_type; >> - u8 rsvd1; >> - /* LVDS capabilities, stored in a dword */ >> - u8 pfit_mode:2; >> - u8 pfit_text_mode_enhanced:1; >> - u8 pfit_gfx_mode_enhanced:1; >> - u8 pfit_ratio_auto:1; >> - u8 pixel_dither:1; >> - u8 lvds_edid:1; >> - u8 rsvd2:1; >> - u8 rsvd4; >> - /* LVDS Panel channel bits stored here */ >> - u32 lvds_panel_channel_bits; >> - /* LVDS SSC (Spread Spectrum Clock) bits stored here. */ >> - u16 ssc_bits; >> - u16 ssc_freq; >> - u16 ssc_ddt; >> - /* Panel color depth defined here */ >> - u16 panel_color_depth; >> - /* LVDS panel type bits stored here */ >> - u32 dps_panel_type_bits; >> - /* LVDS backlight control type bits stored here */ >> - u32 blt_control_type_bits; >> -} __packed; >> - >> -/* LFP pointer table contains entries to the struct below */ >> -struct bdb_lvds_lfp_data_ptr { >> - u16 fp_timing_offset; /* offsets are from start of bdb */ >> - u8 fp_table_size; >> - u16 dvo_timing_offset; >> - u8 dvo_table_size; >> - u16 panel_pnp_id_offset; >> - u8 pnp_table_size; >> -} __packed; >> - >> -struct bdb_lvds_lfp_data_ptrs { >> - u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */ >> - struct bdb_lvds_lfp_data_ptr ptr[16]; >> -} __packed; >> - >> -/* LFP data has 3 blocks per entry */ >> -struct lvds_fp_timing { >> - u16 x_res; >> - u16 y_res; >> - u32 lvds_reg; >> - u32 lvds_reg_val; >> - u32 pp_on_reg; >> - u32 pp_on_reg_val; >> - u32 pp_off_reg; >> - u32 pp_off_reg_val; >> - u32 pp_cycle_reg; >> - u32 pp_cycle_reg_val; >> - u32 pfit_reg; >> - u32 pfit_reg_val; >> - u16 terminator; >> + u8 devices[0]; >> } __packed; >> >> -struct lvds_dvo_timing { >> - u16 clock; /**< In 10khz */ >> - u8 hactive_lo; >> - u8 hblank_lo; >> - u8 hblank_hi:4; >> - u8 hactive_hi:4; >> - u8 vactive_lo; >> - u8 vblank_lo; >> - u8 vblank_hi:4; >> - u8 vactive_hi:4; >> - u8 hsync_off_lo; >> - u8 hsync_pulse_width_lo; >> - u8 vsync_pulse_width_lo:4; >> - u8 vsync_off_lo:4; >> - u8 vsync_pulse_width_hi:2; >> - u8 vsync_off_hi:2; >> - u8 hsync_pulse_width_hi:2; >> - u8 hsync_off_hi:2; >> - u8 himage_lo; >> - u8 vimage_lo; >> - u8 vimage_hi:4; >> - u8 himage_hi:4; >> - u8 h_border; >> - u8 v_border; >> - u8 rsvd1:3; >> - u8 digital:2; >> - u8 vsync_positive:1; >> - u8 hsync_positive:1; >> - u8 non_interlaced:1; >> -} __packed; >> - >> -struct lvds_pnp_id { >> - u16 mfg_name; >> - u16 product_code; >> - u32 serial; >> - u8 mfg_week; >> - u8 mfg_year; >> -} __packed; >> - >> -struct bdb_lvds_lfp_data_entry { >> - struct lvds_fp_timing fp_timing; >> - struct lvds_dvo_timing dvo_timing; >> - struct lvds_pnp_id pnp_id; >> -} __packed; >> - >> -struct bdb_lvds_lfp_data { >> - struct bdb_lvds_lfp_data_entry data[16]; >> -} __packed; >> - >> -#define BDB_BACKLIGHT_TYPE_NONE 0 >> -#define BDB_BACKLIGHT_TYPE_PWM 2 >> - >> -struct bdb_lfp_backlight_data_entry { >> - u8 type:2; >> - u8 active_low_pwm:1; >> - u8 obsolete1:5; >> - u16 pwm_freq_hz; >> - u8 min_brightness; >> - u8 obsolete2; >> - u8 obsolete3; >> -} __packed; >> - >> -struct bdb_lfp_backlight_control_method { >> - u8 type:4; >> - u8 controller:4; >> -} __packed; >> - >> -struct bdb_lfp_backlight_data { >> - u8 entry_size; >> - struct bdb_lfp_backlight_data_entry data[16]; >> - u8 level[16]; >> - struct bdb_lfp_backlight_control_method backlight_control[16]; >> -} __packed; >> +/* >> + * Block 9 - SRD Feature Block >> + */ >> >> -struct aimdb_header { >> - char signature[16]; >> - char oem_device[20]; >> - u16 aimdb_version; >> - u16 aimdb_header_size; >> - u16 aimdb_size; >> -} __packed; >> +struct psr_table { >> + /* Feature bits */ >> + u8 full_link:1; >> + u8 require_aux_to_wakeup:1; >> + u8 feature_bits_rsvd:6; >> >> -struct aimdb_block { >> - u8 aimdb_id; >> - u16 aimdb_size; >> -} __packed; >> + /* Wait times */ >> + u8 idle_frames:4; >> + u8 lines_to_wait:3; >> + u8 wait_times_rsvd:1; >> >> -struct vch_panel_data { >> - u16 fp_timing_offset; >> - u8 fp_timing_size; >> - u16 dvo_timing_offset; >> - u8 dvo_timing_size; >> - u16 text_fitting_offset; >> - u8 text_fitting_size; >> - u16 graphics_fitting_offset; >> - u8 graphics_fitting_size; >> -} __packed; >> + /* TP wake up time in multiple of 100 */ >> + u16 tp1_wakeup_time; >> + u16 tp2_tp3_wakeup_time; >> >> -struct vch_bdb_22 { >> - struct aimdb_block aimdb_block; >> - struct vch_panel_data panels[16]; >> + /* PSR2 TP2/TP3 wakeup time for 16 panels */ >> + u32 psr2_tp2_tp3_wakeup_time; >> } __packed; >> >> -struct bdb_sdvo_lvds_options { >> - u8 panel_backlight; >> - u8 h40_set_panel_type; >> - u8 panel_type; >> - u8 ssc_clk_freq; >> - u16 als_low_trip; >> - u16 als_high_trip; >> - u8 sclalarcoeff_tab_row_num; >> - u8 sclalarcoeff_tab_row_size; >> - u8 coefficient[8]; >> - u8 panel_misc_bits_1; >> - u8 panel_misc_bits_2; >> - u8 panel_misc_bits_3; >> - u8 panel_misc_bits_4; >> +struct bdb_psr { >> + struct psr_table psr_table[16]; >> } __packed; >> >> +/* >> + * Block 12 - Driver Features Data Block >> + */ >> >> #define BDB_DRIVER_FEATURE_NO_LVDS 0 >> #define BDB_DRIVER_FEATURE_INT_LVDS 1 >> #define BDB_DRIVER_FEATURE_SDVO_LVDS 2 >> -#define BDB_DRIVER_FEATURE_EDP 3 >> +#define BDB_DRIVER_FEATURE_INT_SDVO_LVDS 3 >> >> struct bdb_driver_features { >> u8 boot_dev_algorithm:1; >> @@ -684,6 +547,69 @@ struct bdb_driver_features { >> u16 pc_feature_valid:1; >> } __packed; >> >> +/* >> + * Block 22 - SDVO LVDS General Options >> + */ >> + >> +struct bdb_sdvo_lvds_options { >> + u8 panel_backlight; >> + u8 h40_set_panel_type; >> + u8 panel_type; >> + u8 ssc_clk_freq; >> + u16 als_low_trip; >> + u16 als_high_trip; >> + u8 sclalarcoeff_tab_row_num; >> + u8 sclalarcoeff_tab_row_size; >> + u8 coefficient[8]; >> + u8 panel_misc_bits_1; >> + u8 panel_misc_bits_2; >> + u8 panel_misc_bits_3; >> + u8 panel_misc_bits_4; >> +} __packed; >> + >> +/* >> + * Block 23 - SDVO LVDS Panel DTDs >> + */ >> + >> +struct lvds_dvo_timing { >> + u16 clock; /**< In 10khz */ >> + u8 hactive_lo; >> + u8 hblank_lo; >> + u8 hblank_hi:4; >> + u8 hactive_hi:4; >> + u8 vactive_lo; >> + u8 vblank_lo; >> + u8 vblank_hi:4; >> + u8 vactive_hi:4; >> + u8 hsync_off_lo; >> + u8 hsync_pulse_width_lo; >> + u8 vsync_pulse_width_lo:4; >> + u8 vsync_off_lo:4; >> + u8 vsync_pulse_width_hi:2; >> + u8 vsync_off_hi:2; >> + u8 hsync_pulse_width_hi:2; >> + u8 hsync_off_hi:2; >> + u8 himage_lo; >> + u8 vimage_lo; >> + u8 vimage_hi:4; >> + u8 himage_hi:4; >> + u8 h_border; >> + u8 v_border; >> + u8 rsvd1:3; >> + u8 digital:2; >> + u8 vsync_positive:1; >> + u8 hsync_positive:1; >> + u8 non_interlaced:1; >> +} __packed; >> + >> +struct bdb_sdvo_panel_dtds { >> + struct lvds_dvo_timing dtds[4]; >> +} __packed; >> + >> +/* >> + * Block 27 - eDP VBT Block >> + */ >> + >> #define EDP_18BPP 0 >> #define EDP_24BPP 1 >> #define EDP_30BPP 2 >> @@ -736,151 +662,133 @@ struct bdb_edp { >> struct edp_full_link_params full_link_params[16]; /* 199 */ >> } __packed; >> >> -struct psr_table { >> - /* Feature bits */ >> - u8 full_link:1; >> - u8 require_aux_to_wakeup:1; >> - u8 feature_bits_rsvd:6; >> +/* >> + * Block 40 - LFP Data Block >> + */ >> >> - /* Wait times */ >> - u8 idle_frames:4; >> - u8 lines_to_wait:3; >> - u8 wait_times_rsvd:1; >> +/* Mask for DRRS / Panel Channel / SSC / BLT control bits extraction */ >> +#define MODE_MASK 0x3 >> >> - /* TP wake up time in multiple of 100 */ >> - u16 tp1_wakeup_time; >> - u16 tp2_tp3_wakeup_time; >> +struct bdb_lvds_options { >> + u8 panel_type; >> + u8 panel_type2; /* 212 */ >> + /* LVDS capabilities, stored in a dword */ >> + u8 pfit_mode:2; >> + u8 pfit_text_mode_enhanced:1; >> + u8 pfit_gfx_mode_enhanced:1; >> + u8 pfit_ratio_auto:1; >> + u8 pixel_dither:1; >> + u8 lvds_edid:1; >> + u8 rsvd2:1; >> + u8 rsvd4; >> + /* LVDS Panel channel bits stored here */ >> + u32 lvds_panel_channel_bits; >> + /* LVDS SSC (Spread Spectrum Clock) bits stored here. */ >> + u16 ssc_bits; >> + u16 ssc_freq; >> + u16 ssc_ddt; >> + /* Panel color depth defined here */ >> + u16 panel_color_depth; >> + /* LVDS panel type bits stored here */ >> + u32 dps_panel_type_bits; >> + /* LVDS backlight control type bits stored here */ >> + u32 blt_control_type_bits; >> + >> + u16 lcdvcc_s0_enable; /* 200 */ >> + u32 rotation; /* 228 */ >> } __packed; >> >> -struct bdb_psr { >> - struct psr_table psr_table[16]; >> +/* >> + * Block 41 - LFP Data Table Pointers >> + */ >> + >> +/* LFP pointer table contains entries to the struct below */ >> +struct lvds_lfp_data_ptr { >> + u16 fp_timing_offset; /* offsets are from start of bdb */ >> + u8 fp_table_size; >> + u16 dvo_timing_offset; >> + u8 dvo_table_size; >> + u16 panel_pnp_id_offset; >> + u8 pnp_table_size; >> +} __packed; >> + >> +struct bdb_lvds_lfp_data_ptrs { >> + u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */ >> + struct lvds_lfp_data_ptr ptr[16]; >> } __packed; >> >> /* >> - * Driver<->VBIOS interaction occurs through scratch bits in >> - * GR18 & SWF*. >> + * Block 42 - LFP Data Tables >> */ >> >> -/* GR18 bits are set on display switch and hotkey events */ >> -#define GR18_DRIVER_SWITCH_EN (1<<7) /* 0: VBIOS control, 1: driver control */ >> -#define GR18_HOTKEY_MASK 0x78 /* See also SWF4 15:0 */ >> -#define GR18_HK_NONE (0x0<<3) >> -#define GR18_HK_LFP_STRETCH (0x1<<3) >> -#define GR18_HK_TOGGLE_DISP (0x2<<3) >> -#define GR18_HK_DISP_SWITCH (0x4<<3) /* see SWF14 15:0 for what to enable */ >> -#define GR18_HK_POPUP_DISABLED (0x6<<3) >> -#define GR18_HK_POPUP_ENABLED (0x7<<3) >> -#define GR18_HK_PFIT (0x8<<3) >> -#define GR18_HK_APM_CHANGE (0xa<<3) >> -#define GR18_HK_MULTIPLE (0xc<<3) >> -#define GR18_USER_INT_EN (1<<2) >> -#define GR18_A0000_FLUSH_EN (1<<1) >> -#define GR18_SMM_EN (1<<0) >> - >> -/* Set by driver, cleared by VBIOS */ >> -#define SWF00_YRES_SHIFT 16 >> -#define SWF00_XRES_SHIFT 0 >> -#define SWF00_RES_MASK 0xffff >> - >> -/* Set by VBIOS at boot time and driver at runtime */ >> -#define SWF01_TV2_FORMAT_SHIFT 8 >> -#define SWF01_TV1_FORMAT_SHIFT 0 >> -#define SWF01_TV_FORMAT_MASK 0xffff >> - >> -#define SWF10_VBIOS_BLC_I2C_EN (1<<29) >> -#define SWF10_GTT_OVERRIDE_EN (1<<28) >> -#define SWF10_LFP_DPMS_OVR (1<<27) /* override DPMS on display switch */ >> -#define SWF10_ACTIVE_TOGGLE_LIST_MASK (7<<24) >> -#define SWF10_OLD_TOGGLE 0x0 >> -#define SWF10_TOGGLE_LIST_1 0x1 >> -#define SWF10_TOGGLE_LIST_2 0x2 >> -#define SWF10_TOGGLE_LIST_3 0x3 >> -#define SWF10_TOGGLE_LIST_4 0x4 >> -#define SWF10_PANNING_EN (1<<23) >> -#define SWF10_DRIVER_LOADED (1<<22) >> -#define SWF10_EXTENDED_DESKTOP (1<<21) >> -#define SWF10_EXCLUSIVE_MODE (1<<20) >> -#define SWF10_OVERLAY_EN (1<<19) >> -#define SWF10_PLANEB_HOLDOFF (1<<18) >> -#define SWF10_PLANEA_HOLDOFF (1<<17) >> -#define SWF10_VGA_HOLDOFF (1<<16) >> -#define SWF10_ACTIVE_DISP_MASK 0xffff >> -#define SWF10_PIPEB_LFP2 (1<<15) >> -#define SWF10_PIPEB_EFP2 (1<<14) >> -#define SWF10_PIPEB_TV2 (1<<13) >> -#define SWF10_PIPEB_CRT2 (1<<12) >> -#define SWF10_PIPEB_LFP (1<<11) >> -#define SWF10_PIPEB_EFP (1<<10) >> -#define SWF10_PIPEB_TV (1<<9) >> -#define SWF10_PIPEB_CRT (1<<8) >> -#define SWF10_PIPEA_LFP2 (1<<7) >> -#define SWF10_PIPEA_EFP2 (1<<6) >> -#define SWF10_PIPEA_TV2 (1<<5) >> -#define SWF10_PIPEA_CRT2 (1<<4) >> -#define SWF10_PIPEA_LFP (1<<3) >> -#define SWF10_PIPEA_EFP (1<<2) >> -#define SWF10_PIPEA_TV (1<<1) >> -#define SWF10_PIPEA_CRT (1<<0) >> - >> -#define SWF11_MEMORY_SIZE_SHIFT 16 >> -#define SWF11_SV_TEST_EN (1<<15) >> -#define SWF11_IS_AGP (1<<14) >> -#define SWF11_DISPLAY_HOLDOFF (1<<13) >> -#define SWF11_DPMS_REDUCED (1<<12) >> -#define SWF11_IS_VBE_MODE (1<<11) >> -#define SWF11_PIPEB_ACCESS (1<<10) /* 0 here means pipe a */ >> -#define SWF11_DPMS_MASK 0x07 >> -#define SWF11_DPMS_OFF (1<<2) >> -#define SWF11_DPMS_SUSPEND (1<<1) >> -#define SWF11_DPMS_STANDBY (1<<0) >> -#define SWF11_DPMS_ON 0 >> - >> -#define SWF14_GFX_PFIT_EN (1<<31) >> -#define SWF14_TEXT_PFIT_EN (1<<30) >> -#define SWF14_LID_STATUS_CLOSED (1<<29) /* 0 here means open */ >> -#define SWF14_POPUP_EN (1<<28) >> -#define SWF14_DISPLAY_HOLDOFF (1<<27) >> -#define SWF14_DISP_DETECT_EN (1<<26) >> -#define SWF14_DOCKING_STATUS_DOCKED (1<<25) /* 0 here means undocked */ >> -#define SWF14_DRIVER_STATUS (1<<24) >> -#define SWF14_OS_TYPE_WIN9X (1<<23) >> -#define SWF14_OS_TYPE_WINNT (1<<22) >> -/* 21:19 rsvd */ >> -#define SWF14_PM_TYPE_MASK 0x00070000 >> -#define SWF14_PM_ACPI_VIDEO (0x4 << 16) >> -#define SWF14_PM_ACPI (0x3 << 16) >> -#define SWF14_PM_APM_12 (0x2 << 16) >> -#define SWF14_PM_APM_11 (0x1 << 16) >> -#define SWF14_HK_REQUEST_MASK 0x0000ffff /* see GR18 6:3 for event type */ >> - /* if GR18 indicates a display switch */ >> -#define SWF14_DS_PIPEB_LFP2_EN (1<<15) >> -#define SWF14_DS_PIPEB_EFP2_EN (1<<14) >> -#define SWF14_DS_PIPEB_TV2_EN (1<<13) >> -#define SWF14_DS_PIPEB_CRT2_EN (1<<12) >> -#define SWF14_DS_PIPEB_LFP_EN (1<<11) >> -#define SWF14_DS_PIPEB_EFP_EN (1<<10) >> -#define SWF14_DS_PIPEB_TV_EN (1<<9) >> -#define SWF14_DS_PIPEB_CRT_EN (1<<8) >> -#define SWF14_DS_PIPEA_LFP2_EN (1<<7) >> -#define SWF14_DS_PIPEA_EFP2_EN (1<<6) >> -#define SWF14_DS_PIPEA_TV2_EN (1<<5) >> -#define SWF14_DS_PIPEA_CRT2_EN (1<<4) >> -#define SWF14_DS_PIPEA_LFP_EN (1<<3) >> -#define SWF14_DS_PIPEA_EFP_EN (1<<2) >> -#define SWF14_DS_PIPEA_TV_EN (1<<1) >> -#define SWF14_DS_PIPEA_CRT_EN (1<<0) >> - /* if GR18 indicates a panel fitting request */ >> -#define SWF14_PFIT_EN (1<<0) /* 0 means disable */ >> - /* if GR18 indicates an APM change request */ >> -#define SWF14_APM_HIBERNATE 0x4 >> -#define SWF14_APM_SUSPEND 0x3 >> -#define SWF14_APM_STANDBY 0x1 >> -#define SWF14_APM_RESTORE 0x0 >> - >> -/* Block 52 contains MIPI configuration block >> - * 6 * bdb_mipi_config, followed by 6 pps data block >> - * block below >> +/* LFP data has 3 blocks per entry */ >> +struct lvds_fp_timing { >> + u16 x_res; >> + u16 y_res; >> + u32 lvds_reg; >> + u32 lvds_reg_val; >> + u32 pp_on_reg; >> + u32 pp_on_reg_val; >> + u32 pp_off_reg; >> + u32 pp_off_reg_val; >> + u32 pp_cycle_reg; >> + u32 pp_cycle_reg_val; >> + u32 pfit_reg; >> + u32 pfit_reg_val; >> + u16 terminator; >> +} __packed; >> + >> +struct lvds_pnp_id { >> + u16 mfg_name; >> + u16 product_code; >> + u32 serial; >> + u8 mfg_week; >> + u8 mfg_year; >> +} __packed; >> + >> +struct lvds_lfp_data_entry { >> + struct lvds_fp_timing fp_timing; >> + struct lvds_dvo_timing dvo_timing; >> + struct lvds_pnp_id pnp_id; >> +} __packed; >> + >> +struct bdb_lvds_lfp_data { >> + struct lvds_lfp_data_entry data[16]; >> +} __packed; >> + >> +/* >> + * Block 43 - LFP Backlight Control Data Block >> */ >> + >> +#define BDB_BACKLIGHT_TYPE_NONE 0 >> +#define BDB_BACKLIGHT_TYPE_PWM 2 >> + >> +struct lfp_backlight_data_entry { >> + u8 type:2; >> + u8 active_low_pwm:1; >> + u8 obsolete1:5; >> + u16 pwm_freq_hz; >> + u8 min_brightness; >> + u8 obsolete2; >> + u8 obsolete3; >> +} __packed; >> + >> +struct lfp_backlight_control_method { >> + u8 type:4; >> + u8 controller:4; >> +} __packed; >> + >> +struct bdb_lfp_backlight_data { >> + u8 entry_size; >> + struct lfp_backlight_data_entry data[16]; >> + u8 level[16]; >> + struct lfp_backlight_control_method backlight_control[16]; >> +} __packed; >> + >> +/* >> + * Block 52 - MIPI Configuration Block >> + */ >> + >> #define MAX_MIPI_CONFIGURATIONS 6 >> >> struct bdb_mipi_config { >> @@ -888,24 +796,13 @@ struct bdb_mipi_config { >> struct mipi_pps_data pps[MAX_MIPI_CONFIGURATIONS]; >> } __packed; >> >> -/* Block 53 contains MIPI sequences as needed by the panel >> - * for enabling it. This block can be variable in size and >> - * can be maximum of 6 blocks >> +/* >> + * Block 53 - MIPI Sequence Block >> */ >> + >> struct bdb_mipi_sequence { >> u8 version; >> - u8 data[0]; >> + u8 data[0]; /* up to 6 variable length blocks */ >> } __packed; >> >> -enum mipi_gpio_pin_index { >> - MIPI_GPIO_UNDEFINED = 0, >> - MIPI_GPIO_PANEL_ENABLE, >> - MIPI_GPIO_BL_ENABLE, >> - MIPI_GPIO_PWM_ENABLE, >> - MIPI_GPIO_RESET_N, >> - MIPI_GPIO_PWR_DOWN_R, >> - MIPI_GPIO_STDBY_RST_N, >> - MIPI_GPIO_MAX >> -}; >> - >> #endif /* _INTEL_VBT_DEFS_H_ */ >> -- >> 2.20.1 >> >> _______________________________________________ >> igt-dev mailing list >> igt-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/igt-dev -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 5+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tools/intel_vbt_decode: update vbt defs from kernel 2019-06-05 12:33 [igt-dev] [PATCH i-g-t] tools/intel_vbt_decode: update vbt defs from kernel Jani Nikula 2019-06-05 12:57 ` Ville Syrjälä @ 2019-06-05 13:49 ` Patchwork 2019-06-06 20:28 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 2 siblings, 0 replies; 5+ messages in thread From: Patchwork @ 2019-06-05 13:49 UTC (permalink / raw) To: Jani Nikula; +Cc: igt-dev == Series Details == Series: tools/intel_vbt_decode: update vbt defs from kernel URL : https://patchwork.freedesktop.org/series/61652/ State : success == Summary == CI Bug Log - changes from CI_DRM_6195 -> IGTPW_3117 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/61652/revisions/1/mbox/ Known issues ------------ Here are the changes found in IGTPW_3117 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_create@basic: - fi-icl-u3: [PASS][1] -> [DMESG-WARN][2] ([fdo#107724]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-icl-u3/igt@gem_ctx_create@basic.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/fi-icl-u3/igt@gem_ctx_create@basic.html * igt@gem_ctx_create@basic-files: - fi-icl-y: [PASS][3] -> [INCOMPLETE][4] ([fdo#107713] / [fdo#109100]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-icl-y/igt@gem_ctx_create@basic-files.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/fi-icl-y/igt@gem_ctx_create@basic-files.html #### Possible fixes #### * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: [DMESG-WARN][5] ([fdo#102614]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html * igt@prime_vgem@basic-fence-flip: - fi-icl-u3: [DMESG-WARN][7] ([fdo#107724]) -> [PASS][8] +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-icl-u3/igt@prime_vgem@basic-fence-flip.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/fi-icl-u3/igt@prime_vgem@basic-fence-flip.html [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724 [fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100 Participating hosts (52 -> 42) ------------------------------ Additional (1): fi-apl-guc Missing (11): fi-kbl-7567u fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-ivb-3770 fi-pnv-d510 fi-kbl-7560u fi-icl-dsi fi-bdw-samus Build changes ------------- * IGT: IGT_5039 -> IGTPW_3117 CI_DRM_6195: 06b71939f2477c76f9eecb1dd5e99dcb25cb8371 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_3117: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/ IGT_5039: 2d4f470bba1cb51ed116fb80b170f717c6294714 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/ _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 5+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tools/intel_vbt_decode: update vbt defs from kernel 2019-06-05 12:33 [igt-dev] [PATCH i-g-t] tools/intel_vbt_decode: update vbt defs from kernel Jani Nikula 2019-06-05 12:57 ` Ville Syrjälä 2019-06-05 13:49 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork @ 2019-06-06 20:28 ` Patchwork 2 siblings, 0 replies; 5+ messages in thread From: Patchwork @ 2019-06-06 20:28 UTC (permalink / raw) To: Jani Nikula; +Cc: igt-dev == Series Details == Series: tools/intel_vbt_decode: update vbt defs from kernel URL : https://patchwork.freedesktop.org/series/61652/ State : success == Summary == CI Bug Log - changes from CI_DRM_6195_full -> IGTPW_3117_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/61652/revisions/1/mbox/ Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_3117_full: ### IGT changes ### #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * {igt@gem_exec_balancer@smoke}: - shard-iclb: [PASS][1] -> [SKIP][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb1/igt@gem_exec_balancer@smoke.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb6/igt@gem_exec_balancer@smoke.html Known issues ------------ Here are the changes found in IGTPW_3117_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_mmap_gtt@forked-medium-copy: - shard-iclb: [PASS][3] -> [INCOMPLETE][4] ([fdo#107713]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb5/igt@gem_mmap_gtt@forked-medium-copy.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb3/igt@gem_mmap_gtt@forked-medium-copy.html * igt@gem_pwrite@big-gtt-backwards: - shard-glk: [PASS][5] -> [INCOMPLETE][6] ([fdo#103359] / [k.org#198133]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-glk8/igt@gem_pwrite@big-gtt-backwards.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-glk2/igt@gem_pwrite@big-gtt-backwards.html * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw: - shard-iclb: [PASS][7] -> [FAIL][8] ([fdo#103167]) +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb6/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite: - shard-hsw: [PASS][9] -> [SKIP][10] ([fdo#109271]) +33 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-hsw1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite.html * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes: - shard-apl: [PASS][11] -> [DMESG-WARN][12] ([fdo#108566]) +4 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-apl7/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-apl7/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html * igt@kms_psr@psr2_primary_render: - shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109441]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb2/igt@kms_psr@psr2_primary_render.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb6/igt@kms_psr@psr2_primary_render.html * igt@kms_sysfs_edid_timing: - shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#100047]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb4/igt@kms_sysfs_edid_timing.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb2/igt@kms_sysfs_edid_timing.html #### Possible fixes #### * igt@gem_tiled_swapping@non-threaded: - shard-apl: [DMESG-WARN][17] ([fdo#108686]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-apl2/igt@gem_tiled_swapping@non-threaded.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-apl6/igt@gem_tiled_swapping@non-threaded.html * igt@gem_workarounds@suspend-resume: - shard-apl: [DMESG-WARN][19] ([fdo#108566]) -> [PASS][20] +3 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-apl5/igt@gem_workarounds@suspend-resume.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-apl1/igt@gem_workarounds@suspend-resume.html * igt@kms_dp_dsc@basic-dsc-enable-edp: - shard-iclb: [SKIP][21] ([fdo#109349]) -> [PASS][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb7/igt@kms_dp_dsc@basic-dsc-enable-edp.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html * igt@kms_flip@flip-vs-suspend: - shard-kbl: [INCOMPLETE][23] ([fdo#103665]) -> [PASS][24] [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-kbl6/igt@kms_flip@flip-vs-suspend.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-kbl1/igt@kms_flip@flip-vs-suspend.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-render: - shard-iclb: [FAIL][25] ([fdo#103167]) -> [PASS][26] +1 similar issue [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-render.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbc-1p-rte: - shard-iclb: [FAIL][27] ([fdo#103167] / [fdo#110378]) -> [PASS][28] [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-rte.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-rte.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite: - shard-hsw: [SKIP][29] ([fdo#109271]) -> [PASS][30] +14 similar issues [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-hsw4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite.html * igt@kms_psr@psr2_sprite_mmap_gtt: - shard-iclb: [SKIP][31] ([fdo#109441]) -> [PASS][32] +1 similar issue [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb7/igt@kms_psr@psr2_sprite_mmap_gtt.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html * igt@kms_setmode@basic: - shard-apl: [FAIL][33] ([fdo#99912]) -> [PASS][34] [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-apl8/igt@kms_setmode@basic.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-apl1/igt@kms_setmode@basic.html #### Warnings #### * igt@gem_tiled_swapping@non-threaded: - shard-hsw: [FAIL][35] ([fdo#108686]) -> [INCOMPLETE][36] ([fdo#103540]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw1/igt@gem_tiled_swapping@non-threaded.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/shard-hsw1/igt@gem_tiled_swapping@non-threaded.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359 [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#110378]: https://bugs.freedesktop.org/show_bug.cgi?id=110378 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133 Participating hosts (10 -> 6) ------------------------------ Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 Build changes ------------- * IGT: IGT_5039 -> IGTPW_3117 * Piglit: piglit_4509 -> None CI_DRM_6195: 06b71939f2477c76f9eecb1dd5e99dcb25cb8371 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_3117: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/ IGT_5039: 2d4f470bba1cb51ed116fb80b170f717c6294714 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3117/ _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-06-06 20:28 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-06-05 12:33 [igt-dev] [PATCH i-g-t] tools/intel_vbt_decode: update vbt defs from kernel Jani Nikula 2019-06-05 12:57 ` Ville Syrjälä 2019-06-05 13:22 ` Jani Nikula 2019-06-05 13:49 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork 2019-06-06 20:28 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox