* [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups
@ 2017-10-19 15:22 Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 1/8] tools/intel_vbt_decode: make a copy of child devices before dumping Jani Nikula
` (8 more replies)
0 siblings, 9 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Flush some old branches to the list...
BR,
Jani.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH i-g-t 1/8] tools/intel_vbt_decode: make a copy of child devices before dumping
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 2/8] tools/intel_vbt_decode: update dvo port name dumping Jani Nikula
` (7 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Take child device size into account, avoid reading past the actual child
device.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_vbt_decode.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 948dc29dd114..499dcb065745 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -36,6 +36,7 @@
#include <sys/stat.h>
#include <sys/types.h>
+#include "igt_aux.h"
#include "intel_io.h"
#include "intel_chipset.h"
#include "drmtest.h"
@@ -475,6 +476,7 @@ static void dump_general_definitions(struct context *context,
const struct bdb_block *block)
{
const struct bdb_general_definitions *defs = block->data;
+ struct child_device_config *child;
int i;
int child_device_num;
@@ -489,8 +491,22 @@ static void dump_general_definitions(struct context *context,
printf("\tChild device size: %d\n", defs->child_dev_size);
child_device_num = (block->size - sizeof(*defs)) /
defs->child_dev_size;
- for (i = 0; i < child_device_num; i++)
- dump_child_device(context, (const void*)&defs->devices[i * defs->child_dev_size]);
+
+ /*
+ * Use a temp buffer so dump_child_device() doesn't have to worry about
+ * accessing the struct beyond child_dev_size. The tail, if any, remains
+ * initialized to zero.
+ */
+ child = calloc(1, sizeof(*child));
+
+ for (i = 0; i < child_device_num; i++) {
+ memcpy(child, &defs->devices[i * defs->child_dev_size],
+ min(sizeof(*child), defs->child_dev_size));
+
+ dump_child_device(context, child);
+ }
+
+ free(child);
}
static void dump_legacy_child_devices(struct context *context,
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH i-g-t 2/8] tools/intel_vbt_decode: update dvo port name dumping
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 1/8] tools/intel_vbt_decode: make a copy of child devices before dumping Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 3/8] tools/intel_vbt_decode: use %.*s instead of duplicating a string Jani Nikula
` (6 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Add names for new ports, throw out unused macros.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_bios.h | 12 ------------
tools/intel_vbt_decode.c | 47 +++++++++++++++++++++++++----------------------
2 files changed, 25 insertions(+), 34 deletions(-)
diff --git a/tools/intel_bios.h b/tools/intel_bios.h
index 4e06ef74e459..f0475b5cfcc3 100644
--- a/tools/intel_bios.h
+++ b/tools/intel_bios.h
@@ -42,18 +42,6 @@
#define DEVICE_TYPE_DVI 0x68d2
#define DEVICE_TYPE_MIPI 0x7cc2
-#define DEVICE_PORT_DVOA 0x00 /* none on 845+ */
-#define DEVICE_PORT_DVOB 0x01
-#define DEVICE_PORT_DVOC 0x02
-
-#define DEVICE_PORT_NONE 0
-#define DEVICE_PORT_HDMIB 1
-#define DEVICE_PORT_HDMIC 2
-#define DEVICE_PORT_HDMID 3
-#define DEVICE_PORT_DPB 7
-#define DEVICE_PORT_DPC 8
-#define DEVICE_PORT_DPD 9
-
struct legacy_child_device_config {
uint16_t handle;
uint16_t device_type; /* See DEVICE_TYPE_* above */
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 499dcb065745..4865f0bab25f 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -356,29 +356,32 @@ static const char *child_device_handle(unsigned char handle)
return "unknown";
}
-static const struct {
- unsigned short type;
- const char *name;
-} efp_ports[] = {
- { DEVICE_PORT_NONE, "N/A" },
- { DEVICE_PORT_HDMIB, "HDMI-B" },
- { DEVICE_PORT_HDMIC, "HDMI-C" },
- { DEVICE_PORT_HDMID, "HDMI-D" },
- { DEVICE_PORT_DPB, "DP-B" },
- { DEVICE_PORT_DPC, "DP-C" },
- { DEVICE_PORT_DPD, "DP-D" },
+static const char *dvo_port_names[] = {
+ [DVO_PORT_HDMIA] = "HDMI-A",
+ [DVO_PORT_HDMIB] = "HDMI-B",
+ [DVO_PORT_HDMIC] = "HDMI-C",
+ [DVO_PORT_HDMID] = "HDMI-D",
+ [DVO_PORT_LVDS] = "LVDS",
+ [DVO_PORT_TV] = "TV",
+ [DVO_PORT_CRT] = "CRT",
+ [DVO_PORT_DPB] = "DP-B",
+ [DVO_PORT_DPC] = "DP-C",
+ [DVO_PORT_DPD] = "DP-D",
+ [DVO_PORT_DPA] = "DP-A",
+ [DVO_PORT_DPE] = "DP-E",
+ [DVO_PORT_HDMIE] = "HDMI-E",
+ [DVO_PORT_MIPIA] = "MIPI-A",
+ [DVO_PORT_MIPIB] = "MIPI-B",
+ [DVO_PORT_MIPIC] = "MIPI-C",
+ [DVO_PORT_MIPID] = "MIPI-D",
};
-static const int num_efp_ports = sizeof(efp_ports) / sizeof(efp_ports[0]);
-static const char *efp_port(uint8_t type)
+static const char *dvo_port(uint8_t type)
{
- int i;
-
- for (i = 0; i < num_efp_ports; i++)
- if (efp_ports[i].type == type)
- return efp_ports[i].name;
-
- return "unknown";
+ if (type < ARRAY_SIZE(dvo_port_names) && dvo_port_names[type])
+ return dvo_port_names[type];
+ else
+ return "unknown";
}
static void dump_child_device(struct context *context,
@@ -418,9 +421,9 @@ static void dump_child_device(struct context *context,
printf("\t\tCompression enable: %s\n", YESNO(efp->compression_enable));
printf("\t\tEdidless EFP: %s\n", YESNO(efp->edidless_efp));
printf("\t\tCompression structure index: 0x%02x)\n", efp->compression_structure_index);
- printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, efp_port(efp->slave_port));
+ printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, dvo_port(efp->slave_port));
printf("\t\tAIM offset: %d\n", child->addin_offset);
- printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, efp_port(efp->dvo_port));
+ printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, dvo_port(efp->dvo_port));
printf("\t\tAIM I2C pin: 0x%02x\n", efp->i2c_pin);
printf("\t\tAIM Slave address: 0x%02x\n", efp->slave_addr);
printf("\t\tDDC pin: 0x%02x\n", efp->ddc_pin);
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH i-g-t 3/8] tools/intel_vbt_decode: use %.*s instead of duplicating a string
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 1/8] tools/intel_vbt_decode: make a copy of child devices before dumping Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 2/8] tools/intel_vbt_decode: update dvo port name dumping Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 4/8] tools/intel_vbt_decode: abstract DSI bridge type dump Jani Nikula
` (5 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
child->device_id may not be terminated, but we can use %.*s format
specifier to define the max length to print. No need to make a copy.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_vbt_decode.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 4865f0bab25f..0f7e2dafc762 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -388,19 +388,15 @@ static void dump_child_device(struct context *context,
const struct child_device_config *child)
{
const struct child_device_config *efp = child;
- char child_id[11];
if (!child->device_type)
return;
if (context->bdb->version < 152) {
- strncpy(child_id, (const char *)child->device_id, 10);
- child_id[10] = 0;
-
printf("\tChild device info:\n");
printf("\t\tDevice type: %04x (%s)\n", child->device_type,
child_device_type(child->device_type));
- printf("\t\tSignature: %s\n", child_id);
+ printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
printf("\t\tAIM offset: %d\n", child->addin_offset);
printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
} else { /* 152+ have EFP blocks here */
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH i-g-t 4/8] tools/intel_vbt_decode: abstract DSI bridge type dump
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
` (2 preceding siblings ...)
2017-10-19 15:22 ` [PATCH i-g-t 3/8] tools/intel_vbt_decode: use %.*s instead of duplicating a string Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions Jani Nikula
` (4 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Cleaner than having it inline.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_vbt_decode.c | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 0f7e2dafc762..69cf1e4c6cc6 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -384,6 +384,20 @@ static const char *dvo_port(uint8_t type)
return "unknown";
}
+static const char *mipi_bridge_type(uint8_t type)
+{
+ switch (type) {
+ case 1:
+ return "ASUS";
+ case 2:
+ return "Toshiba";
+ case 3:
+ return "Renesas";
+ default:
+ return "unknown";
+ }
+}
+
static void dump_child_device(struct context *context,
const struct child_device_config *child)
{
@@ -440,21 +454,8 @@ static void dump_child_device(struct context *context,
printf("\t\tSDVO stall signal available: %s\n", YESNO(efp->sdvo_stall));
printf("\t\tPipe capabilities: 0x%02x\n", efp->pipe_cap);
printf("\t\tDVO wiring: 0x%02x\n", efp->dvo_wiring);
- printf("\t\tMIPI bridge type:");
- switch (efp->mipi_bridge_type) {
- case 1:
- printf("ASUS\n");
- break;
- case 2:
- printf("Toshiba\n");
- break;
- case 3:
- printf("Renesas\n");
- break;
- default:
- printf("(unknown value %d)\n", efp->mipi_bridge_type);
- break;
- }
+ printf("\t\tMIPI bridge type: %02x (%s)\n", efp->mipi_bridge_type,
+ mipi_bridge_type(efp->mipi_bridge_type));
printf("\t\tDevice class extendsion: 0x%02x\n", efp->extended_type);
printf("\t\tDVO function: 0x%02x\n", efp->dvo_function);
}
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
` (3 preceding siblings ...)
2017-10-19 15:22 ` [PATCH i-g-t 4/8] tools/intel_vbt_decode: abstract DSI bridge type dump Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 17:24 ` Ville Syrjälä
2017-10-19 15:22 ` [PATCH i-g-t 6/8] tools/intel_vbt_decode: unify legacy child device block dumping Jani Nikula
` (3 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Make it easier to compare dumping against the struct definition.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_vbt_decode.c | 128 ++++++++++++++++++++++++++---------------------
1 file changed, 71 insertions(+), 57 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 69cf1e4c6cc6..bc5f38112619 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -401,74 +401,88 @@ static const char *mipi_bridge_type(uint8_t type)
static void dump_child_device(struct context *context,
const struct child_device_config *child)
{
- const struct child_device_config *efp = child;
-
if (!child->device_type)
return;
+ printf("\tChild device info:\n");
+ printf("\t\tDevice handle: 0x%04x (%s)\n", child->handle,
+ child_device_handle(child->handle));
+ printf("\t\tDevice type: 0x%04x (%s)\n", child->device_type,
+ child_device_type(child->device_type));
+ dump_child_device_type_bits(child->device_type);
+
if (context->bdb->version < 152) {
- printf("\tChild device info:\n");
- printf("\t\tDevice type: %04x (%s)\n", child->device_type,
- child_device_type(child->device_type));
printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
- printf("\t\tAIM offset: %d\n", child->addin_offset);
- printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
- } else { /* 152+ have EFP blocks here */
- printf("\tEFP device info:\n");
- printf("\t\tDevice handle: 0x%04x (%s)\n", efp->handle,
- child_device_handle(efp->handle));
- printf("\t\tDevice type: 0x%04x (%s)\n", efp->device_type,
- child_device_type(efp->device_type));
- dump_child_device_type_bits(efp->device_type);
- printf("\t\tI2C speed: 0x%02x\n", efp->i2c_speed);
- printf("\t\tDP onboard redriver: 0x%02x\n", efp->dp_onboard_redriver);
- printf("\t\tDP ondock redriver: 0x%02x\n", efp->dp_ondock_redriver);
- printf("\t\tHDMI max data rate: 0x%02x\n", efp->hdmi_max_data_rate);
- printf("\t\tHDMI level shifter value: 0x%02x\n", efp->hdmi_level_shifter_value);
- printf("\t\tOffset to DTD buffer for edidless EFP: 0x%02x\n", efp->dtd_buf_ptr);
- printf("\t\tDual pipe ganged eDP: %s\n", YESNO(efp->ganged_edp));
- printf("\t\tCompression method CPS: %s\n", YESNO(efp->compression_method));
- printf("\t\tCompression enable: %s\n", YESNO(efp->compression_enable));
- printf("\t\tEdidless EFP: %s\n", YESNO(efp->edidless_efp));
- printf("\t\tCompression structure index: 0x%02x)\n", efp->compression_structure_index);
- printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, dvo_port(efp->slave_port));
- printf("\t\tAIM offset: %d\n", child->addin_offset);
- printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, dvo_port(efp->dvo_port));
- printf("\t\tAIM I2C pin: 0x%02x\n", efp->i2c_pin);
- printf("\t\tAIM Slave address: 0x%02x\n", efp->slave_addr);
- printf("\t\tDDC pin: 0x%02x\n", efp->ddc_pin);
- printf("\t\tEDID buffer ptr: 0x%02x\n", efp->edid_ptr);
- printf("\t\tDVO config: 0x%02x\n", efp->dvo_cfg);
- printf("\t\tHPD sense invert: %s\n", YESNO(efp->hpd_invert));
- printf("\t\tIboost enable: %s\n", YESNO(efp->iboost));
- printf("\t\tOnboard LSPCON: %s\n", YESNO(efp->lspcon));
- printf("\t\tLane reversal: %s\n", YESNO(efp->lane_reversal));
- printf("\t\tEFP routed through dock: %s\n", YESNO(efp->efp_routed));
- printf("\t\tHDMI compatible? %s\n", YESNO(efp->hdmi_support));
- printf("\t\tDP compatible? %s\n", YESNO(efp->dp_support));
- printf("\t\tTMDS compatible? %s\n", YESNO(efp->tmds_support));
- printf("\t\tAux channel: 0x%02x\n", efp->aux_channel);
- printf("\t\tDongle detect: 0x%02x\n", efp->dongle_detect);
- printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(efp->integrated_encoder));
- printf("\t\tHotplu connect status: 0x%02x\n", efp->hpd_status);
- printf("\t\tSDVO stall signal available: %s\n", YESNO(efp->sdvo_stall));
- printf("\t\tPipe capabilities: 0x%02x\n", efp->pipe_cap);
- printf("\t\tDVO wiring: 0x%02x\n", efp->dvo_wiring);
- printf("\t\tMIPI bridge type: %02x (%s)\n", efp->mipi_bridge_type,
- mipi_bridge_type(efp->mipi_bridge_type));
- printf("\t\tDevice class extendsion: 0x%02x\n", efp->extended_type);
- printf("\t\tDVO function: 0x%02x\n", efp->dvo_function);
+ } else {
+ printf("\t\tI2C speed: 0x%02x\n", child->i2c_speed);
+ printf("\t\tDP onboard redriver: 0x%02x\n", child->dp_onboard_redriver);
+ printf("\t\tDP ondock redriver: 0x%02x\n", child->dp_ondock_redriver);
+ printf("\t\tHDMI level shifter value: 0x%02x\n", child->hdmi_level_shifter_value);
+ printf("\t\tHDMI max data rate: 0x%02x\n", child->hdmi_max_data_rate);
+ printf("\t\tOffset to DTD buffer for edidless CHILD: 0x%02x\n", child->dtd_buf_ptr);
+ printf("\t\tEdidless EFP: %s\n", YESNO(child->edidless_efp));
+ printf("\t\tCompression enable: %s\n", YESNO(child->compression_enable));
+ printf("\t\tCompression method CPS: %s\n", YESNO(child->compression_method));
+ printf("\t\tDual pipe ganged eDP: %s\n", YESNO(child->ganged_edp));
+ printf("\t\tCompression structure index: 0x%02x)\n", child->compression_structure_index);
+ printf("\t\tSlave DDI port: 0x%02x (%s)\n", child->slave_port, dvo_port(child->slave_port));
+ }
+
+ printf("\t\tAIM offset: %d\n", child->addin_offset);
+ printf("\t\tDVO Port: 0x%02x (%s)\n", child->dvo_port, dvo_port(child->dvo_port));
+
+ if (context->bdb->version < 152)
+ return;
+
+ printf("\t\tAIM I2C pin: 0x%02x\n", child->i2c_pin);
+ printf("\t\tAIM Slave address: 0x%02x\n", child->slave_addr);
+ printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
+ printf("\t\tEDID buffer ptr: 0x%02x\n", child->edid_ptr);
+ printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg);
+
+ if (context->bdb->version < 158) {
+ printf("\t\tDVO2 Port: 0x%02x (%s)\n", child->dvo2_port, dvo_port(child->dvo2_port));
+ printf("\t\tI2C2 pin: 0x%02x\n", child->i2c2_pin);
+ printf("\t\tSlave2 address: 0x%02x\n", child->slave2_addr);
+ printf("\t\tDDC2 pin: 0x%02x\n", child->ddc2_pin);
+ } else {
+ printf("\t\tEFP routed through dock: %s\n", YESNO(child->efp_routed));
+ printf("\t\tLane reversal: %s\n", YESNO(child->lane_reversal));
+ printf("\t\tOnboard LSPCON: %s\n", YESNO(child->lspcon));
+ printf("\t\tIboost enable: %s\n", YESNO(child->iboost));
+ printf("\t\tHPD sense invert: %s\n", YESNO(child->hpd_invert));
+ printf("\t\tHDMI compatible? %s\n", YESNO(child->hdmi_support));
+ printf("\t\tDP compatible? %s\n", YESNO(child->dp_support));
+ printf("\t\tTMDS compatible? %s\n", YESNO(child->tmds_support));
+ printf("\t\tAux channel: 0x%02x\n", child->aux_channel);
+ printf("\t\tDongle detect: 0x%02x\n", child->dongle_detect);
+ }
+
+ printf("\t\tPipe capabilities: 0x%02x\n", child->pipe_cap);
+ printf("\t\tSDVO stall signal available: %s\n", YESNO(child->sdvo_stall));
+ printf("\t\tHotplu connect status: 0x%02x\n", child->hpd_status);
+ printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(child->integrated_encoder));
+ printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring);
+
+ if (context->bdb->version < 171) {
+ printf("\t\tDVO2 wiring: 0x%02x\n", child->dvo2_wiring);
+ } else {
+ printf("\t\tMIPI bridge type: %02x (%s)\n", child->mipi_bridge_type,
+ mipi_bridge_type(child->mipi_bridge_type));
}
+ printf("\t\tDevice class extendsion: 0x%02x\n", child->extended_type);
+ printf("\t\tDVO function: 0x%02x\n", child->dvo_function);
+
if (context->bdb->version >= 195) {
- printf("\t\tDP USB type C support: %s\n", YESNO(efp->dp_usb_type_c));
- printf("\t\t2X DP GPIO index: 0x%02x\n", efp->dp_gpio_index);
- printf("\t\t2X DP GPIO pin number: 0x%02x\n", efp->dp_gpio_pin_num);
+ printf("\t\tDP USB type C support: %s\n", YESNO(child->dp_usb_type_c));
+ printf("\t\t2X DP GPIO index: 0x%02x\n", child->dp_gpio_index);
+ printf("\t\t2X DP GPIO pin number: 0x%02x\n", child->dp_gpio_pin_num);
}
if (context->bdb->version >= 196) {
- printf("\t\tIBoost level for HDMI: 0x%02x\n", efp->hdmi_iboost_level);
- printf("\t\tIBoost level for DP/eDP: 0x%02x\n", efp->dp_iboost_level);
+ printf("\t\tIBoost level for HDMI: 0x%02x\n", child->hdmi_iboost_level);
+ printf("\t\tIBoost level for DP/eDP: 0x%02x\n", child->dp_iboost_level);
}
}
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH i-g-t 6/8] tools/intel_vbt_decode: unify legacy child device block dumping
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
` (4 preceding siblings ...)
2017-10-19 15:22 ` [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 7/8] tools/intel_vbt_decode: dump more child device data for version < 152 Jani Nikula
` (2 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
It's the same stuff as in the new child devices.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_bios.h | 30 +++---------------------------
tools/intel_vbt_decode.c | 37 +++++++++++++++++++++----------------
2 files changed, 24 insertions(+), 43 deletions(-)
diff --git a/tools/intel_bios.h b/tools/intel_bios.h
index f0475b5cfcc3..78a96d977536 100644
--- a/tools/intel_bios.h
+++ b/tools/intel_bios.h
@@ -42,33 +42,9 @@
#define DEVICE_TYPE_DVI 0x68d2
#define DEVICE_TYPE_MIPI 0x7cc2
-struct legacy_child_device_config {
- uint16_t handle;
- uint16_t device_type; /* See DEVICE_TYPE_* above */
- uint8_t device_id[10];
- uint16_t addin_offset;
- uint8_t dvo_port; /* See DEVICE_PORT_* above */
- uint8_t i2c_pin;
- uint8_t slave_addr;
- uint8_t ddc_pin;
- uint16_t edid_ptr;
- uint8_t dvo_cfg; /* See DEVICE_CFG_* above */
- uint8_t dvo2_port;
- uint8_t i2c2_pin;
- uint8_t slave2_addr;
- uint8_t ddc2_pin;
- uint8_t capabilities;
- uint8_t dvo_wiring; /* See DEVICE_WIRE_* above */
- uint8_t dvo2_wiring;
- uint16_t extended_type;
- uint8_t dvo_function;
-} __attribute__ ((packed));
-
-#define DEVICE_CHILD_SIZE 7
-
-struct bdb_child_devices {
- uint8_t child_structure_size;
- struct legacy_child_device_config children[DEVICE_CHILD_SIZE];
+struct bdb_legacy_child_devices {
+ uint8_t child_dev_size;
+ uint8_t devices[0]; /* presumably 7 * 33 */
} __attribute__ ((packed));
#define BDB_DRIVER_NO_LVDS 0
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index bc5f38112619..3cce60bf2ee2 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -526,25 +526,30 @@ static void dump_general_definitions(struct context *context,
static void dump_legacy_child_devices(struct context *context,
const struct bdb_block *block)
{
- const struct bdb_child_devices *child_devs = block->data;
- const struct legacy_child_device_config *child;
+ const struct bdb_legacy_child_devices *defs = block->data;
+ struct child_device_config *child;
int i;
+ int child_device_num;
- for (i = 0; i < DEVICE_CHILD_SIZE; i++) {
- child = &child_devs->children[i];
- /* Skip nonexistent children */
- if (!child->device_type)
- continue;
- printf("\tChild device %d\n", i);
- printf("\t\tType: 0x%04x (%s)\n", child->device_type,
- child_device_type(child->device_type));
- printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
- printf("\t\tI2C pin: 0x%02x\n", child->i2c_pin);
- printf("\t\tSlave addr: 0x%02x\n", child->slave_addr);
- printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
- printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg);
- printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring);
+ printf("\tChild device size: %d\n", defs->child_dev_size);
+ child_device_num = (block->size - sizeof(*defs)) /
+ defs->child_dev_size;
+
+ /*
+ * Use a temp buffer so dump_child_device() doesn't have to worry about
+ * accessing the struct beyond child_dev_size. The tail, if any, remains
+ * initialized to zero.
+ */
+ child = calloc(1, sizeof(*child));
+
+ for (i = 0; i < child_device_num; i++) {
+ memcpy(child, &defs->devices[i * defs->child_dev_size],
+ min(sizeof(*child), defs->child_dev_size));
+
+ dump_child_device(context, child);
}
+
+ free(child);
}
static void dump_lvds_options(struct context *context,
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH i-g-t 7/8] tools/intel_vbt_decode: dump more child device data for version < 152
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
` (5 preceding siblings ...)
2017-10-19 15:22 ` [PATCH i-g-t 6/8] tools/intel_vbt_decode: unify legacy child device block dumping Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 8/8] tools/intel_vbt_decode: abstract child devices printing more Jani Nikula
2017-10-19 16:52 ` ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: refactoring and cleanups Patchwork
8 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
There's no evidence that this is the limit.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_vbt_decode.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 3cce60bf2ee2..ebc65b82bbde 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -431,9 +431,6 @@ static void dump_child_device(struct context *context,
printf("\t\tAIM offset: %d\n", child->addin_offset);
printf("\t\tDVO Port: 0x%02x (%s)\n", child->dvo_port, dvo_port(child->dvo_port));
- if (context->bdb->version < 152)
- return;
-
printf("\t\tAIM I2C pin: 0x%02x\n", child->i2c_pin);
printf("\t\tAIM Slave address: 0x%02x\n", child->slave_addr);
printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH i-g-t 8/8] tools/intel_vbt_decode: abstract child devices printing more
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
` (6 preceding siblings ...)
2017-10-19 15:22 ` [PATCH i-g-t 7/8] tools/intel_vbt_decode: dump more child device data for version < 152 Jani Nikula
@ 2017-10-19 15:22 ` Jani Nikula
2017-10-19 16:52 ` ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: refactoring and cleanups Patchwork
8 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2017-10-19 15:22 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Unify the common code for current and legacy blocks.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
tools/intel_vbt_decode.c | 70 +++++++++++++++++++++---------------------------
1 file changed, 31 insertions(+), 39 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index ebc65b82bbde..04f733c8cb06 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -483,25 +483,12 @@ static void dump_child_device(struct context *context,
}
}
-static void dump_general_definitions(struct context *context,
- const struct bdb_block *block)
+
+static void dump_child_devices(struct context *context, const uint8_t *devices,
+ uint8_t child_dev_num, uint8_t child_dev_size)
{
- const struct bdb_general_definitions *defs = block->data;
struct child_device_config *child;
int i;
- int child_device_num;
-
- printf("\tCRT DDC GMBUS addr: 0x%02x\n", defs->crt_ddc_gmbus_pin);
- printf("\tUse ACPI DPMS CRT power states: %s\n",
- YESNO(defs->dpms_acpi));
- printf("\tSkip CRT detect at boot: %s\n",
- YESNO(defs->skip_boot_crt_detect));
- printf("\tUse DPMS on AIM devices: %s\n", YESNO(defs->dpms_aim));
- printf("\tBoot display type: 0x%02x%02x\n", defs->boot_display[1],
- defs->boot_display[0]);
- printf("\tChild device size: %d\n", defs->child_dev_size);
- child_device_num = (block->size - sizeof(*defs)) /
- defs->child_dev_size;
/*
* Use a temp buffer so dump_child_device() doesn't have to worry about
@@ -510,9 +497,9 @@ static void dump_general_definitions(struct context *context,
*/
child = calloc(1, sizeof(*child));
- for (i = 0; i < child_device_num; i++) {
- memcpy(child, &defs->devices[i * defs->child_dev_size],
- min(sizeof(*child), defs->child_dev_size));
+ for (i = 0; i < child_dev_num; i++) {
+ memcpy(child, devices + i * child_dev_size,
+ min(sizeof(*child), child_dev_size));
dump_child_device(context, child);
}
@@ -520,33 +507,38 @@ static void dump_general_definitions(struct context *context,
free(child);
}
-static void dump_legacy_child_devices(struct context *context,
- const struct bdb_block *block)
+static void dump_general_definitions(struct context *context,
+ const struct bdb_block *block)
{
- const struct bdb_legacy_child_devices *defs = block->data;
- struct child_device_config *child;
- int i;
- int child_device_num;
+ const struct bdb_general_definitions *defs = block->data;
+ int child_dev_num;
+ printf("\tCRT DDC GMBUS addr: 0x%02x\n", defs->crt_ddc_gmbus_pin);
+ printf("\tUse ACPI DPMS CRT power states: %s\n",
+ YESNO(defs->dpms_acpi));
+ printf("\tSkip CRT detect at boot: %s\n",
+ YESNO(defs->skip_boot_crt_detect));
+ printf("\tUse DPMS on AIM devices: %s\n", YESNO(defs->dpms_aim));
+ printf("\tBoot display type: 0x%02x%02x\n", defs->boot_display[1],
+ defs->boot_display[0]);
printf("\tChild device size: %d\n", defs->child_dev_size);
- child_device_num = (block->size - sizeof(*defs)) /
- defs->child_dev_size;
- /*
- * Use a temp buffer so dump_child_device() doesn't have to worry about
- * accessing the struct beyond child_dev_size. The tail, if any, remains
- * initialized to zero.
- */
- child = calloc(1, sizeof(*child));
+ child_dev_num = (block->size - sizeof(*defs)) / defs->child_dev_size;
+ dump_child_devices(context, defs->devices,
+ child_dev_num, defs->child_dev_size);
+}
- for (i = 0; i < child_device_num; i++) {
- memcpy(child, &defs->devices[i * defs->child_dev_size],
- min(sizeof(*child), defs->child_dev_size));
+static void dump_legacy_child_devices(struct context *context,
+ const struct bdb_block *block)
+{
+ const struct bdb_legacy_child_devices *defs = block->data;
+ int child_dev_num;
- dump_child_device(context, child);
- }
+ printf("\tChild device size: %d\n", defs->child_dev_size);
- free(child);
+ child_dev_num = (block->size - sizeof(*defs)) / defs->child_dev_size;
+ dump_child_devices(context, defs->devices,
+ child_dev_num, defs->child_dev_size);
}
static void dump_lvds_options(struct context *context,
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: refactoring and cleanups
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
` (7 preceding siblings ...)
2017-10-19 15:22 ` [PATCH i-g-t 8/8] tools/intel_vbt_decode: abstract child devices printing more Jani Nikula
@ 2017-10-19 16:52 ` Patchwork
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2017-10-19 16:52 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: tools/intel_vbt_decode: refactoring and cleanups
URL : https://patchwork.freedesktop.org/series/32302/
State : failure
== Summary ==
IGT patchset tested on top of latest successful build
abc08cba366a64a07f7f4deb167ae7d6ae059958 lib: Free all internal buffers before measuring available memory
with latest DRM-Tip kernel build CI_DRM_3266
9024f1a2827a drm-tip: 2017y-10m-19d-12h-57m-03s UTC integration manifest
No testlist changes.
Test chamelium:
Subgroup dp-crc-fast:
pass -> FAIL (fi-kbl-7500u) fdo#102514
Test kms_busy:
Subgroup basic-flip-b:
fail -> PASS (fi-gdg-551) fdo#102654
Test kms_cursor_legacy:
Subgroup basic-busy-flip-before-cursor-legacy:
fail -> PASS (fi-gdg-551) fdo#102618
Subgroup basic-flip-after-cursor-varying-size:
incomplete -> PASS (fi-skl-6260u)
Test kms_flip:
Subgroup basic-plain-flip:
pass -> INCOMPLETE (fi-skl-6700hq)
fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514
fdo#102654 https://bugs.freedesktop.org/show_bug.cgi?id=102654
fdo#102618 https://bugs.freedesktop.org/show_bug.cgi?id=102618
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:444s
fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:458s
fi-blb-e6850 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:375s
fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:539s
fi-bwr-2160 total:289 pass:183 dwarn:0 dfail:0 fail:0 skip:106 time:267s
fi-bxt-dsi total:289 pass:259 dwarn:0 dfail:0 fail:0 skip:30 time:502s
fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:500s
fi-byt-j1900 total:289 pass:253 dwarn:1 dfail:0 fail:0 skip:35 time:495s
fi-byt-n2820 total:289 pass:249 dwarn:1 dfail:0 fail:0 skip:39 time:489s
fi-cfl-s total:289 pass:253 dwarn:4 dfail:0 fail:0 skip:32 time:546s
fi-elk-e7500 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:412s
fi-gdg-551 total:289 pass:178 dwarn:1 dfail:0 fail:1 skip:109 time:253s
fi-glk-1 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:579s
fi-hsw-4770 total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:451s
fi-hsw-4770r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:428s
fi-ilk-650 total:289 pass:228 dwarn:0 dfail:0 fail:0 skip:61 time:437s
fi-ivb-3520m total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:482s
fi-ivb-3770 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:461s
fi-kbl-7500u total:289 pass:263 dwarn:1 dfail:0 fail:1 skip:24 time:483s
fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:572s
fi-kbl-7567u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:477s
fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:585s
fi-pnv-d510 total:289 pass:222 dwarn:1 dfail:0 fail:0 skip:66 time:545s
fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:453s
fi-skl-6700hq total:220 pass:199 dwarn:0 dfail:0 fail:0 skip:20
fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:515s
fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:506s
fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:454s
fi-snb-2520m total:289 pass:250 dwarn:0 dfail:0 fail:0 skip:39 time:569s
fi-snb-2600 total:289 pass:249 dwarn:0 dfail:0 fail:0 skip:40 time:425s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_389/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions
2017-10-19 15:22 ` [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions Jani Nikula
@ 2017-10-19 17:24 ` Ville Syrjälä
2017-10-20 10:56 ` Jani Nikula
0 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2017-10-19 17:24 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Thu, Oct 19, 2017 at 06:22:56PM +0300, Jani Nikula wrote:
> Make it easier to compare dumping against the struct definition.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> tools/intel_vbt_decode.c | 128 ++++++++++++++++++++++++++---------------------
> 1 file changed, 71 insertions(+), 57 deletions(-)
>
> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> index 69cf1e4c6cc6..bc5f38112619 100644
> --- a/tools/intel_vbt_decode.c
> +++ b/tools/intel_vbt_decode.c
> @@ -401,74 +401,88 @@ static const char *mipi_bridge_type(uint8_t type)
> static void dump_child_device(struct context *context,
> const struct child_device_config *child)
> {
> - const struct child_device_config *efp = child;
> -
> if (!child->device_type)
> return;
>
> + printf("\tChild device info:\n");
> + printf("\t\tDevice handle: 0x%04x (%s)\n", child->handle,
> + child_device_handle(child->handle));
> + printf("\t\tDevice type: 0x%04x (%s)\n", child->device_type,
> + child_device_type(child->device_type));
> + dump_child_device_type_bits(child->device_type);
> +
> if (context->bdb->version < 152) {
> - printf("\tChild device info:\n");
> - printf("\t\tDevice type: %04x (%s)\n", child->device_type,
> - child_device_type(child->device_type));
> printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
> - printf("\t\tAIM offset: %d\n", child->addin_offset);
> - printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
> - } else { /* 152+ have EFP blocks here */
> - printf("\tEFP device info:\n");
> - printf("\t\tDevice handle: 0x%04x (%s)\n", efp->handle,
> - child_device_handle(efp->handle));
> - printf("\t\tDevice type: 0x%04x (%s)\n", efp->device_type,
> - child_device_type(efp->device_type));
> - dump_child_device_type_bits(efp->device_type);
> - printf("\t\tI2C speed: 0x%02x\n", efp->i2c_speed);
> - printf("\t\tDP onboard redriver: 0x%02x\n", efp->dp_onboard_redriver);
> - printf("\t\tDP ondock redriver: 0x%02x\n", efp->dp_ondock_redriver);
> - printf("\t\tHDMI max data rate: 0x%02x\n", efp->hdmi_max_data_rate);
> - printf("\t\tHDMI level shifter value: 0x%02x\n", efp->hdmi_level_shifter_value);
> - printf("\t\tOffset to DTD buffer for edidless EFP: 0x%02x\n", efp->dtd_buf_ptr);
> - printf("\t\tDual pipe ganged eDP: %s\n", YESNO(efp->ganged_edp));
> - printf("\t\tCompression method CPS: %s\n", YESNO(efp->compression_method));
> - printf("\t\tCompression enable: %s\n", YESNO(efp->compression_enable));
> - printf("\t\tEdidless EFP: %s\n", YESNO(efp->edidless_efp));
> - printf("\t\tCompression structure index: 0x%02x)\n", efp->compression_structure_index);
> - printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, dvo_port(efp->slave_port));
> - printf("\t\tAIM offset: %d\n", child->addin_offset);
> - printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, dvo_port(efp->dvo_port));
> - printf("\t\tAIM I2C pin: 0x%02x\n", efp->i2c_pin);
> - printf("\t\tAIM Slave address: 0x%02x\n", efp->slave_addr);
> - printf("\t\tDDC pin: 0x%02x\n", efp->ddc_pin);
> - printf("\t\tEDID buffer ptr: 0x%02x\n", efp->edid_ptr);
> - printf("\t\tDVO config: 0x%02x\n", efp->dvo_cfg);
> - printf("\t\tHPD sense invert: %s\n", YESNO(efp->hpd_invert));
> - printf("\t\tIboost enable: %s\n", YESNO(efp->iboost));
> - printf("\t\tOnboard LSPCON: %s\n", YESNO(efp->lspcon));
> - printf("\t\tLane reversal: %s\n", YESNO(efp->lane_reversal));
> - printf("\t\tEFP routed through dock: %s\n", YESNO(efp->efp_routed));
> - printf("\t\tHDMI compatible? %s\n", YESNO(efp->hdmi_support));
> - printf("\t\tDP compatible? %s\n", YESNO(efp->dp_support));
> - printf("\t\tTMDS compatible? %s\n", YESNO(efp->tmds_support));
> - printf("\t\tAux channel: 0x%02x\n", efp->aux_channel);
> - printf("\t\tDongle detect: 0x%02x\n", efp->dongle_detect);
> - printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(efp->integrated_encoder));
> - printf("\t\tHotplu connect status: 0x%02x\n", efp->hpd_status);
> - printf("\t\tSDVO stall signal available: %s\n", YESNO(efp->sdvo_stall));
> - printf("\t\tPipe capabilities: 0x%02x\n", efp->pipe_cap);
> - printf("\t\tDVO wiring: 0x%02x\n", efp->dvo_wiring);
> - printf("\t\tMIPI bridge type: %02x (%s)\n", efp->mipi_bridge_type,
> - mipi_bridge_type(efp->mipi_bridge_type));
> - printf("\t\tDevice class extendsion: 0x%02x\n", efp->extended_type);
> - printf("\t\tDVO function: 0x%02x\n", efp->dvo_function);
> + } else {
> + printf("\t\tI2C speed: 0x%02x\n", child->i2c_speed);
> + printf("\t\tDP onboard redriver: 0x%02x\n", child->dp_onboard_redriver);
> + printf("\t\tDP ondock redriver: 0x%02x\n", child->dp_ondock_redriver);
> + printf("\t\tHDMI level shifter value: 0x%02x\n", child->hdmi_level_shifter_value);
> + printf("\t\tHDMI max data rate: 0x%02x\n", child->hdmi_max_data_rate);
> + printf("\t\tOffset to DTD buffer for edidless CHILD: 0x%02x\n", child->dtd_buf_ptr);
> + printf("\t\tEdidless EFP: %s\n", YESNO(child->edidless_efp));
> + printf("\t\tCompression enable: %s\n", YESNO(child->compression_enable));
> + printf("\t\tCompression method CPS: %s\n", YESNO(child->compression_method));
> + printf("\t\tDual pipe ganged eDP: %s\n", YESNO(child->ganged_edp));
> + printf("\t\tCompression structure index: 0x%02x)\n", child->compression_structure_index);
> + printf("\t\tSlave DDI port: 0x%02x (%s)\n", child->slave_port, dvo_port(child->slave_port));
> + }
> +
> + printf("\t\tAIM offset: %d\n", child->addin_offset);
> + printf("\t\tDVO Port: 0x%02x (%s)\n", child->dvo_port, dvo_port(child->dvo_port));
> +
> + if (context->bdb->version < 152)
> + return;
> +
> + printf("\t\tAIM I2C pin: 0x%02x\n", child->i2c_pin);
> + printf("\t\tAIM Slave address: 0x%02x\n", child->slave_addr);
> + printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
> + printf("\t\tEDID buffer ptr: 0x%02x\n", child->edid_ptr);
> + printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg);
> +
> + if (context->bdb->version < 158) {
> + printf("\t\tDVO2 Port: 0x%02x (%s)\n", child->dvo2_port, dvo_port(child->dvo2_port));
> + printf("\t\tI2C2 pin: 0x%02x\n", child->i2c2_pin);
> + printf("\t\tSlave2 address: 0x%02x\n", child->slave2_addr);
> + printf("\t\tDDC2 pin: 0x%02x\n", child->ddc2_pin);
> + } else {
> + printf("\t\tEFP routed through dock: %s\n", YESNO(child->efp_routed));
> + printf("\t\tLane reversal: %s\n", YESNO(child->lane_reversal));
> + printf("\t\tOnboard LSPCON: %s\n", YESNO(child->lspcon));
> + printf("\t\tIboost enable: %s\n", YESNO(child->iboost));
> + printf("\t\tHPD sense invert: %s\n", YESNO(child->hpd_invert));
> + printf("\t\tHDMI compatible? %s\n", YESNO(child->hdmi_support));
> + printf("\t\tDP compatible? %s\n", YESNO(child->dp_support));
> + printf("\t\tTMDS compatible? %s\n", YESNO(child->tmds_support));
> + printf("\t\tAux channel: 0x%02x\n", child->aux_channel);
> + printf("\t\tDongle detect: 0x%02x\n", child->dongle_detect);
The version of the spec I have at hand says aux and dongle are
already part of version 155.
> + }
> +
> + printf("\t\tPipe capabilities: 0x%02x\n", child->pipe_cap);
> + printf("\t\tSDVO stall signal available: %s\n", YESNO(child->sdvo_stall));
> + printf("\t\tHotplu connect status: 0x%02x\n", child->hpd_status);
^
Pre-existing typo
> + printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(child->integrated_encoder));
> + printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring);
> +
> + if (context->bdb->version < 171) {
> + printf("\t\tDVO2 wiring: 0x%02x\n", child->dvo2_wiring);
> + } else {
> + printf("\t\tMIPI bridge type: %02x (%s)\n", child->mipi_bridge_type,
> + mipi_bridge_type(child->mipi_bridge_type));
> }
>
> + printf("\t\tDevice class extendsion: 0x%02x\n", child->extended_type);
^
ditto
> + printf("\t\tDVO function: 0x%02x\n", child->dvo_function);
> +
> if (context->bdb->version >= 195) {
> - printf("\t\tDP USB type C support: %s\n", YESNO(efp->dp_usb_type_c));
> - printf("\t\t2X DP GPIO index: 0x%02x\n", efp->dp_gpio_index);
> - printf("\t\t2X DP GPIO pin number: 0x%02x\n", efp->dp_gpio_pin_num);
> + printf("\t\tDP USB type C support: %s\n", YESNO(child->dp_usb_type_c));
> + printf("\t\t2X DP GPIO index: 0x%02x\n", child->dp_gpio_index);
> + printf("\t\t2X DP GPIO pin number: 0x%02x\n", child->dp_gpio_pin_num);
> }
>
> if (context->bdb->version >= 196) {
> - printf("\t\tIBoost level for HDMI: 0x%02x\n", efp->hdmi_iboost_level);
> - printf("\t\tIBoost level for DP/eDP: 0x%02x\n", efp->dp_iboost_level);
> + printf("\t\tIBoost level for HDMI: 0x%02x\n", child->hdmi_iboost_level);
> + printf("\t\tIBoost level for DP/eDP: 0x%02x\n", child->dp_iboost_level);
> }
> }
>
> --
> 2.11.0
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions
2017-10-19 17:24 ` Ville Syrjälä
@ 2017-10-20 10:56 ` Jani Nikula
2017-10-20 11:33 ` Ville Syrjälä
0 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2017-10-20 10:56 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
On Thu, 19 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Thu, Oct 19, 2017 at 06:22:56PM +0300, Jani Nikula wrote:
>> Make it easier to compare dumping against the struct definition.
>>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>> tools/intel_vbt_decode.c | 128 ++++++++++++++++++++++++++---------------------
>> 1 file changed, 71 insertions(+), 57 deletions(-)
>>
>> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
>> index 69cf1e4c6cc6..bc5f38112619 100644
>> --- a/tools/intel_vbt_decode.c
>> +++ b/tools/intel_vbt_decode.c
>> @@ -401,74 +401,88 @@ static const char *mipi_bridge_type(uint8_t type)
>> static void dump_child_device(struct context *context,
>> const struct child_device_config *child)
>> {
>> - const struct child_device_config *efp = child;
>> -
>> if (!child->device_type)
>> return;
>>
>> + printf("\tChild device info:\n");
>> + printf("\t\tDevice handle: 0x%04x (%s)\n", child->handle,
>> + child_device_handle(child->handle));
>> + printf("\t\tDevice type: 0x%04x (%s)\n", child->device_type,
>> + child_device_type(child->device_type));
>> + dump_child_device_type_bits(child->device_type);
>> +
>> if (context->bdb->version < 152) {
>> - printf("\tChild device info:\n");
>> - printf("\t\tDevice type: %04x (%s)\n", child->device_type,
>> - child_device_type(child->device_type));
>> printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
>> - printf("\t\tAIM offset: %d\n", child->addin_offset);
>> - printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
>> - } else { /* 152+ have EFP blocks here */
>> - printf("\tEFP device info:\n");
>> - printf("\t\tDevice handle: 0x%04x (%s)\n", efp->handle,
>> - child_device_handle(efp->handle));
>> - printf("\t\tDevice type: 0x%04x (%s)\n", efp->device_type,
>> - child_device_type(efp->device_type));
>> - dump_child_device_type_bits(efp->device_type);
>> - printf("\t\tI2C speed: 0x%02x\n", efp->i2c_speed);
>> - printf("\t\tDP onboard redriver: 0x%02x\n", efp->dp_onboard_redriver);
>> - printf("\t\tDP ondock redriver: 0x%02x\n", efp->dp_ondock_redriver);
>> - printf("\t\tHDMI max data rate: 0x%02x\n", efp->hdmi_max_data_rate);
>> - printf("\t\tHDMI level shifter value: 0x%02x\n", efp->hdmi_level_shifter_value);
>> - printf("\t\tOffset to DTD buffer for edidless EFP: 0x%02x\n", efp->dtd_buf_ptr);
>> - printf("\t\tDual pipe ganged eDP: %s\n", YESNO(efp->ganged_edp));
>> - printf("\t\tCompression method CPS: %s\n", YESNO(efp->compression_method));
>> - printf("\t\tCompression enable: %s\n", YESNO(efp->compression_enable));
>> - printf("\t\tEdidless EFP: %s\n", YESNO(efp->edidless_efp));
>> - printf("\t\tCompression structure index: 0x%02x)\n", efp->compression_structure_index);
>> - printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, dvo_port(efp->slave_port));
>> - printf("\t\tAIM offset: %d\n", child->addin_offset);
>> - printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, dvo_port(efp->dvo_port));
>> - printf("\t\tAIM I2C pin: 0x%02x\n", efp->i2c_pin);
>> - printf("\t\tAIM Slave address: 0x%02x\n", efp->slave_addr);
>> - printf("\t\tDDC pin: 0x%02x\n", efp->ddc_pin);
>> - printf("\t\tEDID buffer ptr: 0x%02x\n", efp->edid_ptr);
>> - printf("\t\tDVO config: 0x%02x\n", efp->dvo_cfg);
>> - printf("\t\tHPD sense invert: %s\n", YESNO(efp->hpd_invert));
>> - printf("\t\tIboost enable: %s\n", YESNO(efp->iboost));
>> - printf("\t\tOnboard LSPCON: %s\n", YESNO(efp->lspcon));
>> - printf("\t\tLane reversal: %s\n", YESNO(efp->lane_reversal));
>> - printf("\t\tEFP routed through dock: %s\n", YESNO(efp->efp_routed));
>> - printf("\t\tHDMI compatible? %s\n", YESNO(efp->hdmi_support));
>> - printf("\t\tDP compatible? %s\n", YESNO(efp->dp_support));
>> - printf("\t\tTMDS compatible? %s\n", YESNO(efp->tmds_support));
>> - printf("\t\tAux channel: 0x%02x\n", efp->aux_channel);
>> - printf("\t\tDongle detect: 0x%02x\n", efp->dongle_detect);
>> - printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(efp->integrated_encoder));
>> - printf("\t\tHotplu connect status: 0x%02x\n", efp->hpd_status);
>> - printf("\t\tSDVO stall signal available: %s\n", YESNO(efp->sdvo_stall));
>> - printf("\t\tPipe capabilities: 0x%02x\n", efp->pipe_cap);
>> - printf("\t\tDVO wiring: 0x%02x\n", efp->dvo_wiring);
>> - printf("\t\tMIPI bridge type: %02x (%s)\n", efp->mipi_bridge_type,
>> - mipi_bridge_type(efp->mipi_bridge_type));
>> - printf("\t\tDevice class extendsion: 0x%02x\n", efp->extended_type);
>> - printf("\t\tDVO function: 0x%02x\n", efp->dvo_function);
>> + } else {
>> + printf("\t\tI2C speed: 0x%02x\n", child->i2c_speed);
>> + printf("\t\tDP onboard redriver: 0x%02x\n", child->dp_onboard_redriver);
>> + printf("\t\tDP ondock redriver: 0x%02x\n", child->dp_ondock_redriver);
>> + printf("\t\tHDMI level shifter value: 0x%02x\n", child->hdmi_level_shifter_value);
>> + printf("\t\tHDMI max data rate: 0x%02x\n", child->hdmi_max_data_rate);
>> + printf("\t\tOffset to DTD buffer for edidless CHILD: 0x%02x\n", child->dtd_buf_ptr);
>> + printf("\t\tEdidless EFP: %s\n", YESNO(child->edidless_efp));
>> + printf("\t\tCompression enable: %s\n", YESNO(child->compression_enable));
>> + printf("\t\tCompression method CPS: %s\n", YESNO(child->compression_method));
>> + printf("\t\tDual pipe ganged eDP: %s\n", YESNO(child->ganged_edp));
>> + printf("\t\tCompression structure index: 0x%02x)\n", child->compression_structure_index);
>> + printf("\t\tSlave DDI port: 0x%02x (%s)\n", child->slave_port, dvo_port(child->slave_port));
>> + }
>> +
>> + printf("\t\tAIM offset: %d\n", child->addin_offset);
>> + printf("\t\tDVO Port: 0x%02x (%s)\n", child->dvo_port, dvo_port(child->dvo_port));
>> +
>> + if (context->bdb->version < 152)
>> + return;
>> +
>> + printf("\t\tAIM I2C pin: 0x%02x\n", child->i2c_pin);
>> + printf("\t\tAIM Slave address: 0x%02x\n", child->slave_addr);
>> + printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
>> + printf("\t\tEDID buffer ptr: 0x%02x\n", child->edid_ptr);
>> + printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg);
>> +
>> + if (context->bdb->version < 158) {
>> + printf("\t\tDVO2 Port: 0x%02x (%s)\n", child->dvo2_port, dvo_port(child->dvo2_port));
>> + printf("\t\tI2C2 pin: 0x%02x\n", child->i2c2_pin);
>> + printf("\t\tSlave2 address: 0x%02x\n", child->slave2_addr);
>> + printf("\t\tDDC2 pin: 0x%02x\n", child->ddc2_pin);
>> + } else {
>> + printf("\t\tEFP routed through dock: %s\n", YESNO(child->efp_routed));
>> + printf("\t\tLane reversal: %s\n", YESNO(child->lane_reversal));
>> + printf("\t\tOnboard LSPCON: %s\n", YESNO(child->lspcon));
>> + printf("\t\tIboost enable: %s\n", YESNO(child->iboost));
>> + printf("\t\tHPD sense invert: %s\n", YESNO(child->hpd_invert));
>> + printf("\t\tHDMI compatible? %s\n", YESNO(child->hdmi_support));
>> + printf("\t\tDP compatible? %s\n", YESNO(child->dp_support));
>> + printf("\t\tTMDS compatible? %s\n", YESNO(child->tmds_support));
>> + printf("\t\tAux channel: 0x%02x\n", child->aux_channel);
>> + printf("\t\tDongle detect: 0x%02x\n", child->dongle_detect);
>
> The version of the spec I have at hand says aux and dongle are
> already part of version 155.
Seems like dvo2/i2c2/slave2/ddc2 were converted to flags at 155. Okay if
I just change the condition above from < 158 to < 155?
BR,
Jani.
>
>> + }
>> +
>> + printf("\t\tPipe capabilities: 0x%02x\n", child->pipe_cap);
>> + printf("\t\tSDVO stall signal available: %s\n", YESNO(child->sdvo_stall));
>> + printf("\t\tHotplu connect status: 0x%02x\n", child->hpd_status);
> ^
> Pre-existing typo
>
>> + printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(child->integrated_encoder));
>> + printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring);
>> +
>> + if (context->bdb->version < 171) {
>> + printf("\t\tDVO2 wiring: 0x%02x\n", child->dvo2_wiring);
>> + } else {
>> + printf("\t\tMIPI bridge type: %02x (%s)\n", child->mipi_bridge_type,
>> + mipi_bridge_type(child->mipi_bridge_type));
>> }
>>
>> + printf("\t\tDevice class extendsion: 0x%02x\n", child->extended_type);
> ^
> ditto
>
>> + printf("\t\tDVO function: 0x%02x\n", child->dvo_function);
>> +
>> if (context->bdb->version >= 195) {
>> - printf("\t\tDP USB type C support: %s\n", YESNO(efp->dp_usb_type_c));
>> - printf("\t\t2X DP GPIO index: 0x%02x\n", efp->dp_gpio_index);
>> - printf("\t\t2X DP GPIO pin number: 0x%02x\n", efp->dp_gpio_pin_num);
>> + printf("\t\tDP USB type C support: %s\n", YESNO(child->dp_usb_type_c));
>> + printf("\t\t2X DP GPIO index: 0x%02x\n", child->dp_gpio_index);
>> + printf("\t\t2X DP GPIO pin number: 0x%02x\n", child->dp_gpio_pin_num);
>> }
>>
>> if (context->bdb->version >= 196) {
>> - printf("\t\tIBoost level for HDMI: 0x%02x\n", efp->hdmi_iboost_level);
>> - printf("\t\tIBoost level for DP/eDP: 0x%02x\n", efp->dp_iboost_level);
>> + printf("\t\tIBoost level for HDMI: 0x%02x\n", child->hdmi_iboost_level);
>> + printf("\t\tIBoost level for DP/eDP: 0x%02x\n", child->dp_iboost_level);
>> }
>> }
>>
>> --
>> 2.11.0
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions
2017-10-20 10:56 ` Jani Nikula
@ 2017-10-20 11:33 ` Ville Syrjälä
2017-10-20 13:17 ` Jani Nikula
0 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2017-10-20 11:33 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Fri, Oct 20, 2017 at 01:56:11PM +0300, Jani Nikula wrote:
> On Thu, 19 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> > On Thu, Oct 19, 2017 at 06:22:56PM +0300, Jani Nikula wrote:
> >> Make it easier to compare dumping against the struct definition.
> >>
> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> >> ---
> >> tools/intel_vbt_decode.c | 128 ++++++++++++++++++++++++++---------------------
> >> 1 file changed, 71 insertions(+), 57 deletions(-)
> >>
> >> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> >> index 69cf1e4c6cc6..bc5f38112619 100644
> >> --- a/tools/intel_vbt_decode.c
> >> +++ b/tools/intel_vbt_decode.c
> >> @@ -401,74 +401,88 @@ static const char *mipi_bridge_type(uint8_t type)
> >> static void dump_child_device(struct context *context,
> >> const struct child_device_config *child)
> >> {
> >> - const struct child_device_config *efp = child;
> >> -
> >> if (!child->device_type)
> >> return;
> >>
> >> + printf("\tChild device info:\n");
> >> + printf("\t\tDevice handle: 0x%04x (%s)\n", child->handle,
> >> + child_device_handle(child->handle));
> >> + printf("\t\tDevice type: 0x%04x (%s)\n", child->device_type,
> >> + child_device_type(child->device_type));
> >> + dump_child_device_type_bits(child->device_type);
> >> +
> >> if (context->bdb->version < 152) {
> >> - printf("\tChild device info:\n");
> >> - printf("\t\tDevice type: %04x (%s)\n", child->device_type,
> >> - child_device_type(child->device_type));
> >> printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
> >> - printf("\t\tAIM offset: %d\n", child->addin_offset);
> >> - printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
> >> - } else { /* 152+ have EFP blocks here */
> >> - printf("\tEFP device info:\n");
> >> - printf("\t\tDevice handle: 0x%04x (%s)\n", efp->handle,
> >> - child_device_handle(efp->handle));
> >> - printf("\t\tDevice type: 0x%04x (%s)\n", efp->device_type,
> >> - child_device_type(efp->device_type));
> >> - dump_child_device_type_bits(efp->device_type);
> >> - printf("\t\tI2C speed: 0x%02x\n", efp->i2c_speed);
> >> - printf("\t\tDP onboard redriver: 0x%02x\n", efp->dp_onboard_redriver);
> >> - printf("\t\tDP ondock redriver: 0x%02x\n", efp->dp_ondock_redriver);
> >> - printf("\t\tHDMI max data rate: 0x%02x\n", efp->hdmi_max_data_rate);
> >> - printf("\t\tHDMI level shifter value: 0x%02x\n", efp->hdmi_level_shifter_value);
> >> - printf("\t\tOffset to DTD buffer for edidless EFP: 0x%02x\n", efp->dtd_buf_ptr);
> >> - printf("\t\tDual pipe ganged eDP: %s\n", YESNO(efp->ganged_edp));
> >> - printf("\t\tCompression method CPS: %s\n", YESNO(efp->compression_method));
> >> - printf("\t\tCompression enable: %s\n", YESNO(efp->compression_enable));
> >> - printf("\t\tEdidless EFP: %s\n", YESNO(efp->edidless_efp));
> >> - printf("\t\tCompression structure index: 0x%02x)\n", efp->compression_structure_index);
> >> - printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, dvo_port(efp->slave_port));
> >> - printf("\t\tAIM offset: %d\n", child->addin_offset);
> >> - printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, dvo_port(efp->dvo_port));
> >> - printf("\t\tAIM I2C pin: 0x%02x\n", efp->i2c_pin);
> >> - printf("\t\tAIM Slave address: 0x%02x\n", efp->slave_addr);
> >> - printf("\t\tDDC pin: 0x%02x\n", efp->ddc_pin);
> >> - printf("\t\tEDID buffer ptr: 0x%02x\n", efp->edid_ptr);
> >> - printf("\t\tDVO config: 0x%02x\n", efp->dvo_cfg);
> >> - printf("\t\tHPD sense invert: %s\n", YESNO(efp->hpd_invert));
> >> - printf("\t\tIboost enable: %s\n", YESNO(efp->iboost));
> >> - printf("\t\tOnboard LSPCON: %s\n", YESNO(efp->lspcon));
> >> - printf("\t\tLane reversal: %s\n", YESNO(efp->lane_reversal));
> >> - printf("\t\tEFP routed through dock: %s\n", YESNO(efp->efp_routed));
> >> - printf("\t\tHDMI compatible? %s\n", YESNO(efp->hdmi_support));
> >> - printf("\t\tDP compatible? %s\n", YESNO(efp->dp_support));
> >> - printf("\t\tTMDS compatible? %s\n", YESNO(efp->tmds_support));
> >> - printf("\t\tAux channel: 0x%02x\n", efp->aux_channel);
> >> - printf("\t\tDongle detect: 0x%02x\n", efp->dongle_detect);
> >> - printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(efp->integrated_encoder));
> >> - printf("\t\tHotplu connect status: 0x%02x\n", efp->hpd_status);
> >> - printf("\t\tSDVO stall signal available: %s\n", YESNO(efp->sdvo_stall));
> >> - printf("\t\tPipe capabilities: 0x%02x\n", efp->pipe_cap);
> >> - printf("\t\tDVO wiring: 0x%02x\n", efp->dvo_wiring);
> >> - printf("\t\tMIPI bridge type: %02x (%s)\n", efp->mipi_bridge_type,
> >> - mipi_bridge_type(efp->mipi_bridge_type));
> >> - printf("\t\tDevice class extendsion: 0x%02x\n", efp->extended_type);
> >> - printf("\t\tDVO function: 0x%02x\n", efp->dvo_function);
> >> + } else {
> >> + printf("\t\tI2C speed: 0x%02x\n", child->i2c_speed);
> >> + printf("\t\tDP onboard redriver: 0x%02x\n", child->dp_onboard_redriver);
> >> + printf("\t\tDP ondock redriver: 0x%02x\n", child->dp_ondock_redriver);
> >> + printf("\t\tHDMI level shifter value: 0x%02x\n", child->hdmi_level_shifter_value);
> >> + printf("\t\tHDMI max data rate: 0x%02x\n", child->hdmi_max_data_rate);
> >> + printf("\t\tOffset to DTD buffer for edidless CHILD: 0x%02x\n", child->dtd_buf_ptr);
> >> + printf("\t\tEdidless EFP: %s\n", YESNO(child->edidless_efp));
> >> + printf("\t\tCompression enable: %s\n", YESNO(child->compression_enable));
> >> + printf("\t\tCompression method CPS: %s\n", YESNO(child->compression_method));
> >> + printf("\t\tDual pipe ganged eDP: %s\n", YESNO(child->ganged_edp));
> >> + printf("\t\tCompression structure index: 0x%02x)\n", child->compression_structure_index);
> >> + printf("\t\tSlave DDI port: 0x%02x (%s)\n", child->slave_port, dvo_port(child->slave_port));
> >> + }
> >> +
> >> + printf("\t\tAIM offset: %d\n", child->addin_offset);
> >> + printf("\t\tDVO Port: 0x%02x (%s)\n", child->dvo_port, dvo_port(child->dvo_port));
> >> +
> >> + if (context->bdb->version < 152)
> >> + return;
> >> +
> >> + printf("\t\tAIM I2C pin: 0x%02x\n", child->i2c_pin);
> >> + printf("\t\tAIM Slave address: 0x%02x\n", child->slave_addr);
> >> + printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
> >> + printf("\t\tEDID buffer ptr: 0x%02x\n", child->edid_ptr);
> >> + printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg);
> >> +
> >> + if (context->bdb->version < 158) {
> >> + printf("\t\tDVO2 Port: 0x%02x (%s)\n", child->dvo2_port, dvo_port(child->dvo2_port));
> >> + printf("\t\tI2C2 pin: 0x%02x\n", child->i2c2_pin);
> >> + printf("\t\tSlave2 address: 0x%02x\n", child->slave2_addr);
> >> + printf("\t\tDDC2 pin: 0x%02x\n", child->ddc2_pin);
> >> + } else {
> >> + printf("\t\tEFP routed through dock: %s\n", YESNO(child->efp_routed));
> >> + printf("\t\tLane reversal: %s\n", YESNO(child->lane_reversal));
> >> + printf("\t\tOnboard LSPCON: %s\n", YESNO(child->lspcon));
> >> + printf("\t\tIboost enable: %s\n", YESNO(child->iboost));
> >> + printf("\t\tHPD sense invert: %s\n", YESNO(child->hpd_invert));
> >> + printf("\t\tHDMI compatible? %s\n", YESNO(child->hdmi_support));
> >> + printf("\t\tDP compatible? %s\n", YESNO(child->dp_support));
> >> + printf("\t\tTMDS compatible? %s\n", YESNO(child->tmds_support));
> >> + printf("\t\tAux channel: 0x%02x\n", child->aux_channel);
> >> + printf("\t\tDongle detect: 0x%02x\n", child->dongle_detect);
> >
> > The version of the spec I have at hand says aux and dongle are
> > already part of version 155.
>
> Seems like dvo2/i2c2/slave2/ddc2 were converted to flags at 155. Okay if
> I just change the condition above from < 158 to < 155?
Aye.
I didn't trawl through all the gritty details of the entire series, but
what I do see I like, so for the series
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
I wonder if we should add more version checks so that we wouldn't dump
things that aren't actually specified? One crazy idea I had is that we
could define a parallel structure which would have a matching u8 member
to everything in the child_device_config, and we would initialize
each member with the correct version number. Then we could have some
kind of nice dump macro/function that checks the current VBT version
against the number from said parallel structure.
>
> BR,
> Jani.
>
>
> >
> >> + }
> >> +
> >> + printf("\t\tPipe capabilities: 0x%02x\n", child->pipe_cap);
> >> + printf("\t\tSDVO stall signal available: %s\n", YESNO(child->sdvo_stall));
> >> + printf("\t\tHotplu connect status: 0x%02x\n", child->hpd_status);
> > ^
> > Pre-existing typo
> >
> >> + printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(child->integrated_encoder));
> >> + printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring);
> >> +
> >> + if (context->bdb->version < 171) {
> >> + printf("\t\tDVO2 wiring: 0x%02x\n", child->dvo2_wiring);
> >> + } else {
> >> + printf("\t\tMIPI bridge type: %02x (%s)\n", child->mipi_bridge_type,
> >> + mipi_bridge_type(child->mipi_bridge_type));
> >> }
> >>
> >> + printf("\t\tDevice class extendsion: 0x%02x\n", child->extended_type);
> > ^
> > ditto
> >
> >> + printf("\t\tDVO function: 0x%02x\n", child->dvo_function);
> >> +
> >> if (context->bdb->version >= 195) {
> >> - printf("\t\tDP USB type C support: %s\n", YESNO(efp->dp_usb_type_c));
> >> - printf("\t\t2X DP GPIO index: 0x%02x\n", efp->dp_gpio_index);
> >> - printf("\t\t2X DP GPIO pin number: 0x%02x\n", efp->dp_gpio_pin_num);
> >> + printf("\t\tDP USB type C support: %s\n", YESNO(child->dp_usb_type_c));
> >> + printf("\t\t2X DP GPIO index: 0x%02x\n", child->dp_gpio_index);
> >> + printf("\t\t2X DP GPIO pin number: 0x%02x\n", child->dp_gpio_pin_num);
> >> }
> >>
> >> if (context->bdb->version >= 196) {
> >> - printf("\t\tIBoost level for HDMI: 0x%02x\n", efp->hdmi_iboost_level);
> >> - printf("\t\tIBoost level for DP/eDP: 0x%02x\n", efp->dp_iboost_level);
> >> + printf("\t\tIBoost level for HDMI: 0x%02x\n", child->hdmi_iboost_level);
> >> + printf("\t\tIBoost level for DP/eDP: 0x%02x\n", child->dp_iboost_level);
> >> }
> >> }
> >>
> >> --
> >> 2.11.0
>
> --
> Jani Nikula, Intel Open Source Technology Center
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions
2017-10-20 11:33 ` Ville Syrjälä
@ 2017-10-20 13:17 ` Jani Nikula
2017-10-20 13:49 ` Ville Syrjälä
0 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2017-10-20 13:17 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
On Fri, 20 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Fri, Oct 20, 2017 at 01:56:11PM +0300, Jani Nikula wrote:
>> On Thu, 19 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
>> > On Thu, Oct 19, 2017 at 06:22:56PM +0300, Jani Nikula wrote:
>> >> Make it easier to compare dumping against the struct definition.
>> >>
>> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> >> ---
>> >> tools/intel_vbt_decode.c | 128 ++++++++++++++++++++++++++---------------------
>> >> 1 file changed, 71 insertions(+), 57 deletions(-)
>> >>
>> >> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
>> >> index 69cf1e4c6cc6..bc5f38112619 100644
>> >> --- a/tools/intel_vbt_decode.c
>> >> +++ b/tools/intel_vbt_decode.c
>> >> @@ -401,74 +401,88 @@ static const char *mipi_bridge_type(uint8_t type)
>> >> static void dump_child_device(struct context *context,
>> >> const struct child_device_config *child)
>> >> {
>> >> - const struct child_device_config *efp = child;
>> >> -
>> >> if (!child->device_type)
>> >> return;
>> >>
>> >> + printf("\tChild device info:\n");
>> >> + printf("\t\tDevice handle: 0x%04x (%s)\n", child->handle,
>> >> + child_device_handle(child->handle));
>> >> + printf("\t\tDevice type: 0x%04x (%s)\n", child->device_type,
>> >> + child_device_type(child->device_type));
>> >> + dump_child_device_type_bits(child->device_type);
>> >> +
>> >> if (context->bdb->version < 152) {
>> >> - printf("\tChild device info:\n");
>> >> - printf("\t\tDevice type: %04x (%s)\n", child->device_type,
>> >> - child_device_type(child->device_type));
>> >> printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
>> >> - printf("\t\tAIM offset: %d\n", child->addin_offset);
>> >> - printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
>> >> - } else { /* 152+ have EFP blocks here */
>> >> - printf("\tEFP device info:\n");
>> >> - printf("\t\tDevice handle: 0x%04x (%s)\n", efp->handle,
>> >> - child_device_handle(efp->handle));
>> >> - printf("\t\tDevice type: 0x%04x (%s)\n", efp->device_type,
>> >> - child_device_type(efp->device_type));
>> >> - dump_child_device_type_bits(efp->device_type);
>> >> - printf("\t\tI2C speed: 0x%02x\n", efp->i2c_speed);
>> >> - printf("\t\tDP onboard redriver: 0x%02x\n", efp->dp_onboard_redriver);
>> >> - printf("\t\tDP ondock redriver: 0x%02x\n", efp->dp_ondock_redriver);
>> >> - printf("\t\tHDMI max data rate: 0x%02x\n", efp->hdmi_max_data_rate);
>> >> - printf("\t\tHDMI level shifter value: 0x%02x\n", efp->hdmi_level_shifter_value);
>> >> - printf("\t\tOffset to DTD buffer for edidless EFP: 0x%02x\n", efp->dtd_buf_ptr);
>> >> - printf("\t\tDual pipe ganged eDP: %s\n", YESNO(efp->ganged_edp));
>> >> - printf("\t\tCompression method CPS: %s\n", YESNO(efp->compression_method));
>> >> - printf("\t\tCompression enable: %s\n", YESNO(efp->compression_enable));
>> >> - printf("\t\tEdidless EFP: %s\n", YESNO(efp->edidless_efp));
>> >> - printf("\t\tCompression structure index: 0x%02x)\n", efp->compression_structure_index);
>> >> - printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, dvo_port(efp->slave_port));
>> >> - printf("\t\tAIM offset: %d\n", child->addin_offset);
>> >> - printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, dvo_port(efp->dvo_port));
>> >> - printf("\t\tAIM I2C pin: 0x%02x\n", efp->i2c_pin);
>> >> - printf("\t\tAIM Slave address: 0x%02x\n", efp->slave_addr);
>> >> - printf("\t\tDDC pin: 0x%02x\n", efp->ddc_pin);
>> >> - printf("\t\tEDID buffer ptr: 0x%02x\n", efp->edid_ptr);
>> >> - printf("\t\tDVO config: 0x%02x\n", efp->dvo_cfg);
>> >> - printf("\t\tHPD sense invert: %s\n", YESNO(efp->hpd_invert));
>> >> - printf("\t\tIboost enable: %s\n", YESNO(efp->iboost));
>> >> - printf("\t\tOnboard LSPCON: %s\n", YESNO(efp->lspcon));
>> >> - printf("\t\tLane reversal: %s\n", YESNO(efp->lane_reversal));
>> >> - printf("\t\tEFP routed through dock: %s\n", YESNO(efp->efp_routed));
>> >> - printf("\t\tHDMI compatible? %s\n", YESNO(efp->hdmi_support));
>> >> - printf("\t\tDP compatible? %s\n", YESNO(efp->dp_support));
>> >> - printf("\t\tTMDS compatible? %s\n", YESNO(efp->tmds_support));
>> >> - printf("\t\tAux channel: 0x%02x\n", efp->aux_channel);
>> >> - printf("\t\tDongle detect: 0x%02x\n", efp->dongle_detect);
>> >> - printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(efp->integrated_encoder));
>> >> - printf("\t\tHotplu connect status: 0x%02x\n", efp->hpd_status);
>> >> - printf("\t\tSDVO stall signal available: %s\n", YESNO(efp->sdvo_stall));
>> >> - printf("\t\tPipe capabilities: 0x%02x\n", efp->pipe_cap);
>> >> - printf("\t\tDVO wiring: 0x%02x\n", efp->dvo_wiring);
>> >> - printf("\t\tMIPI bridge type: %02x (%s)\n", efp->mipi_bridge_type,
>> >> - mipi_bridge_type(efp->mipi_bridge_type));
>> >> - printf("\t\tDevice class extendsion: 0x%02x\n", efp->extended_type);
>> >> - printf("\t\tDVO function: 0x%02x\n", efp->dvo_function);
>> >> + } else {
>> >> + printf("\t\tI2C speed: 0x%02x\n", child->i2c_speed);
>> >> + printf("\t\tDP onboard redriver: 0x%02x\n", child->dp_onboard_redriver);
>> >> + printf("\t\tDP ondock redriver: 0x%02x\n", child->dp_ondock_redriver);
>> >> + printf("\t\tHDMI level shifter value: 0x%02x\n", child->hdmi_level_shifter_value);
>> >> + printf("\t\tHDMI max data rate: 0x%02x\n", child->hdmi_max_data_rate);
>> >> + printf("\t\tOffset to DTD buffer for edidless CHILD: 0x%02x\n", child->dtd_buf_ptr);
>> >> + printf("\t\tEdidless EFP: %s\n", YESNO(child->edidless_efp));
>> >> + printf("\t\tCompression enable: %s\n", YESNO(child->compression_enable));
>> >> + printf("\t\tCompression method CPS: %s\n", YESNO(child->compression_method));
>> >> + printf("\t\tDual pipe ganged eDP: %s\n", YESNO(child->ganged_edp));
>> >> + printf("\t\tCompression structure index: 0x%02x)\n", child->compression_structure_index);
>> >> + printf("\t\tSlave DDI port: 0x%02x (%s)\n", child->slave_port, dvo_port(child->slave_port));
>> >> + }
>> >> +
>> >> + printf("\t\tAIM offset: %d\n", child->addin_offset);
>> >> + printf("\t\tDVO Port: 0x%02x (%s)\n", child->dvo_port, dvo_port(child->dvo_port));
>> >> +
>> >> + if (context->bdb->version < 152)
>> >> + return;
>> >> +
>> >> + printf("\t\tAIM I2C pin: 0x%02x\n", child->i2c_pin);
>> >> + printf("\t\tAIM Slave address: 0x%02x\n", child->slave_addr);
>> >> + printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
>> >> + printf("\t\tEDID buffer ptr: 0x%02x\n", child->edid_ptr);
>> >> + printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg);
>> >> +
>> >> + if (context->bdb->version < 158) {
>> >> + printf("\t\tDVO2 Port: 0x%02x (%s)\n", child->dvo2_port, dvo_port(child->dvo2_port));
>> >> + printf("\t\tI2C2 pin: 0x%02x\n", child->i2c2_pin);
>> >> + printf("\t\tSlave2 address: 0x%02x\n", child->slave2_addr);
>> >> + printf("\t\tDDC2 pin: 0x%02x\n", child->ddc2_pin);
>> >> + } else {
>> >> + printf("\t\tEFP routed through dock: %s\n", YESNO(child->efp_routed));
>> >> + printf("\t\tLane reversal: %s\n", YESNO(child->lane_reversal));
>> >> + printf("\t\tOnboard LSPCON: %s\n", YESNO(child->lspcon));
>> >> + printf("\t\tIboost enable: %s\n", YESNO(child->iboost));
>> >> + printf("\t\tHPD sense invert: %s\n", YESNO(child->hpd_invert));
>> >> + printf("\t\tHDMI compatible? %s\n", YESNO(child->hdmi_support));
>> >> + printf("\t\tDP compatible? %s\n", YESNO(child->dp_support));
>> >> + printf("\t\tTMDS compatible? %s\n", YESNO(child->tmds_support));
>> >> + printf("\t\tAux channel: 0x%02x\n", child->aux_channel);
>> >> + printf("\t\tDongle detect: 0x%02x\n", child->dongle_detect);
>> >
>> > The version of the spec I have at hand says aux and dongle are
>> > already part of version 155.
>>
>> Seems like dvo2/i2c2/slave2/ddc2 were converted to flags at 155. Okay if
>> I just change the condition above from < 158 to < 155?
>
> Aye.
>
> I didn't trawl through all the gritty details of the entire series, but
> what I do see I like, so for the series
> Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Thanks, pushed the lot.
> I wonder if we should add more version checks so that we wouldn't dump
> things that aren't actually specified? One crazy idea I had is that we
> could define a parallel structure which would have a matching u8 member
> to everything in the child_device_config, and we would initialize
> each member with the correct version number. Then we could have some
> kind of nice dump macro/function that checks the current VBT version
> against the number from said parallel structure.
Overengineering? ;)
BR,
Jani.
>
>>
>> BR,
>> Jani.
>>
>>
>> >
>> >> + }
>> >> +
>> >> + printf("\t\tPipe capabilities: 0x%02x\n", child->pipe_cap);
>> >> + printf("\t\tSDVO stall signal available: %s\n", YESNO(child->sdvo_stall));
>> >> + printf("\t\tHotplu connect status: 0x%02x\n", child->hpd_status);
>> > ^
>> > Pre-existing typo
>> >
>> >> + printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(child->integrated_encoder));
>> >> + printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring);
>> >> +
>> >> + if (context->bdb->version < 171) {
>> >> + printf("\t\tDVO2 wiring: 0x%02x\n", child->dvo2_wiring);
>> >> + } else {
>> >> + printf("\t\tMIPI bridge type: %02x (%s)\n", child->mipi_bridge_type,
>> >> + mipi_bridge_type(child->mipi_bridge_type));
>> >> }
>> >>
>> >> + printf("\t\tDevice class extendsion: 0x%02x\n", child->extended_type);
>> > ^
>> > ditto
>> >
>> >> + printf("\t\tDVO function: 0x%02x\n", child->dvo_function);
>> >> +
>> >> if (context->bdb->version >= 195) {
>> >> - printf("\t\tDP USB type C support: %s\n", YESNO(efp->dp_usb_type_c));
>> >> - printf("\t\t2X DP GPIO index: 0x%02x\n", efp->dp_gpio_index);
>> >> - printf("\t\t2X DP GPIO pin number: 0x%02x\n", efp->dp_gpio_pin_num);
>> >> + printf("\t\tDP USB type C support: %s\n", YESNO(child->dp_usb_type_c));
>> >> + printf("\t\t2X DP GPIO index: 0x%02x\n", child->dp_gpio_index);
>> >> + printf("\t\t2X DP GPIO pin number: 0x%02x\n", child->dp_gpio_pin_num);
>> >> }
>> >>
>> >> if (context->bdb->version >= 196) {
>> >> - printf("\t\tIBoost level for HDMI: 0x%02x\n", efp->hdmi_iboost_level);
>> >> - printf("\t\tIBoost level for DP/eDP: 0x%02x\n", efp->dp_iboost_level);
>> >> + printf("\t\tIBoost level for HDMI: 0x%02x\n", child->hdmi_iboost_level);
>> >> + printf("\t\tIBoost level for DP/eDP: 0x%02x\n", child->dp_iboost_level);
>> >> }
>> >> }
>> >>
>> >> --
>> >> 2.11.0
>>
>> --
>> Jani Nikula, Intel Open Source Technology Center
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions
2017-10-20 13:17 ` Jani Nikula
@ 2017-10-20 13:49 ` Ville Syrjälä
0 siblings, 0 replies; 15+ messages in thread
From: Ville Syrjälä @ 2017-10-20 13:49 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Fri, Oct 20, 2017 at 04:17:06PM +0300, Jani Nikula wrote:
> On Fri, 20 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> > On Fri, Oct 20, 2017 at 01:56:11PM +0300, Jani Nikula wrote:
> >> On Thu, 19 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> >> > On Thu, Oct 19, 2017 at 06:22:56PM +0300, Jani Nikula wrote:
> >> >> Make it easier to compare dumping against the struct definition.
> >> >>
> >> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> >> >> ---
> >> >> tools/intel_vbt_decode.c | 128 ++++++++++++++++++++++++++---------------------
> >> >> 1 file changed, 71 insertions(+), 57 deletions(-)
> >> >>
> >> >> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> >> >> index 69cf1e4c6cc6..bc5f38112619 100644
> >> >> --- a/tools/intel_vbt_decode.c
> >> >> +++ b/tools/intel_vbt_decode.c
> >> >> @@ -401,74 +401,88 @@ static const char *mipi_bridge_type(uint8_t type)
> >> >> static void dump_child_device(struct context *context,
> >> >> const struct child_device_config *child)
> >> >> {
> >> >> - const struct child_device_config *efp = child;
> >> >> -
> >> >> if (!child->device_type)
> >> >> return;
> >> >>
> >> >> + printf("\tChild device info:\n");
> >> >> + printf("\t\tDevice handle: 0x%04x (%s)\n", child->handle,
> >> >> + child_device_handle(child->handle));
> >> >> + printf("\t\tDevice type: 0x%04x (%s)\n", child->device_type,
> >> >> + child_device_type(child->device_type));
> >> >> + dump_child_device_type_bits(child->device_type);
> >> >> +
> >> >> if (context->bdb->version < 152) {
> >> >> - printf("\tChild device info:\n");
> >> >> - printf("\t\tDevice type: %04x (%s)\n", child->device_type,
> >> >> - child_device_type(child->device_type));
> >> >> printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
> >> >> - printf("\t\tAIM offset: %d\n", child->addin_offset);
> >> >> - printf("\t\tDVO port: 0x%02x\n", child->dvo_port);
> >> >> - } else { /* 152+ have EFP blocks here */
> >> >> - printf("\tEFP device info:\n");
> >> >> - printf("\t\tDevice handle: 0x%04x (%s)\n", efp->handle,
> >> >> - child_device_handle(efp->handle));
> >> >> - printf("\t\tDevice type: 0x%04x (%s)\n", efp->device_type,
> >> >> - child_device_type(efp->device_type));
> >> >> - dump_child_device_type_bits(efp->device_type);
> >> >> - printf("\t\tI2C speed: 0x%02x\n", efp->i2c_speed);
> >> >> - printf("\t\tDP onboard redriver: 0x%02x\n", efp->dp_onboard_redriver);
> >> >> - printf("\t\tDP ondock redriver: 0x%02x\n", efp->dp_ondock_redriver);
> >> >> - printf("\t\tHDMI max data rate: 0x%02x\n", efp->hdmi_max_data_rate);
> >> >> - printf("\t\tHDMI level shifter value: 0x%02x\n", efp->hdmi_level_shifter_value);
> >> >> - printf("\t\tOffset to DTD buffer for edidless EFP: 0x%02x\n", efp->dtd_buf_ptr);
> >> >> - printf("\t\tDual pipe ganged eDP: %s\n", YESNO(efp->ganged_edp));
> >> >> - printf("\t\tCompression method CPS: %s\n", YESNO(efp->compression_method));
> >> >> - printf("\t\tCompression enable: %s\n", YESNO(efp->compression_enable));
> >> >> - printf("\t\tEdidless EFP: %s\n", YESNO(efp->edidless_efp));
> >> >> - printf("\t\tCompression structure index: 0x%02x)\n", efp->compression_structure_index);
> >> >> - printf("\t\tSlave DDI port: 0x%02x (%s)\n", efp->slave_port, dvo_port(efp->slave_port));
> >> >> - printf("\t\tAIM offset: %d\n", child->addin_offset);
> >> >> - printf("\t\tPort: 0x%02x (%s)\n", efp->dvo_port, dvo_port(efp->dvo_port));
> >> >> - printf("\t\tAIM I2C pin: 0x%02x\n", efp->i2c_pin);
> >> >> - printf("\t\tAIM Slave address: 0x%02x\n", efp->slave_addr);
> >> >> - printf("\t\tDDC pin: 0x%02x\n", efp->ddc_pin);
> >> >> - printf("\t\tEDID buffer ptr: 0x%02x\n", efp->edid_ptr);
> >> >> - printf("\t\tDVO config: 0x%02x\n", efp->dvo_cfg);
> >> >> - printf("\t\tHPD sense invert: %s\n", YESNO(efp->hpd_invert));
> >> >> - printf("\t\tIboost enable: %s\n", YESNO(efp->iboost));
> >> >> - printf("\t\tOnboard LSPCON: %s\n", YESNO(efp->lspcon));
> >> >> - printf("\t\tLane reversal: %s\n", YESNO(efp->lane_reversal));
> >> >> - printf("\t\tEFP routed through dock: %s\n", YESNO(efp->efp_routed));
> >> >> - printf("\t\tHDMI compatible? %s\n", YESNO(efp->hdmi_support));
> >> >> - printf("\t\tDP compatible? %s\n", YESNO(efp->dp_support));
> >> >> - printf("\t\tTMDS compatible? %s\n", YESNO(efp->tmds_support));
> >> >> - printf("\t\tAux channel: 0x%02x\n", efp->aux_channel);
> >> >> - printf("\t\tDongle detect: 0x%02x\n", efp->dongle_detect);
> >> >> - printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(efp->integrated_encoder));
> >> >> - printf("\t\tHotplu connect status: 0x%02x\n", efp->hpd_status);
> >> >> - printf("\t\tSDVO stall signal available: %s\n", YESNO(efp->sdvo_stall));
> >> >> - printf("\t\tPipe capabilities: 0x%02x\n", efp->pipe_cap);
> >> >> - printf("\t\tDVO wiring: 0x%02x\n", efp->dvo_wiring);
> >> >> - printf("\t\tMIPI bridge type: %02x (%s)\n", efp->mipi_bridge_type,
> >> >> - mipi_bridge_type(efp->mipi_bridge_type));
> >> >> - printf("\t\tDevice class extendsion: 0x%02x\n", efp->extended_type);
> >> >> - printf("\t\tDVO function: 0x%02x\n", efp->dvo_function);
> >> >> + } else {
> >> >> + printf("\t\tI2C speed: 0x%02x\n", child->i2c_speed);
> >> >> + printf("\t\tDP onboard redriver: 0x%02x\n", child->dp_onboard_redriver);
> >> >> + printf("\t\tDP ondock redriver: 0x%02x\n", child->dp_ondock_redriver);
> >> >> + printf("\t\tHDMI level shifter value: 0x%02x\n", child->hdmi_level_shifter_value);
> >> >> + printf("\t\tHDMI max data rate: 0x%02x\n", child->hdmi_max_data_rate);
> >> >> + printf("\t\tOffset to DTD buffer for edidless CHILD: 0x%02x\n", child->dtd_buf_ptr);
> >> >> + printf("\t\tEdidless EFP: %s\n", YESNO(child->edidless_efp));
> >> >> + printf("\t\tCompression enable: %s\n", YESNO(child->compression_enable));
> >> >> + printf("\t\tCompression method CPS: %s\n", YESNO(child->compression_method));
> >> >> + printf("\t\tDual pipe ganged eDP: %s\n", YESNO(child->ganged_edp));
> >> >> + printf("\t\tCompression structure index: 0x%02x)\n", child->compression_structure_index);
> >> >> + printf("\t\tSlave DDI port: 0x%02x (%s)\n", child->slave_port, dvo_port(child->slave_port));
> >> >> + }
> >> >> +
> >> >> + printf("\t\tAIM offset: %d\n", child->addin_offset);
> >> >> + printf("\t\tDVO Port: 0x%02x (%s)\n", child->dvo_port, dvo_port(child->dvo_port));
> >> >> +
> >> >> + if (context->bdb->version < 152)
> >> >> + return;
> >> >> +
> >> >> + printf("\t\tAIM I2C pin: 0x%02x\n", child->i2c_pin);
> >> >> + printf("\t\tAIM Slave address: 0x%02x\n", child->slave_addr);
> >> >> + printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin);
> >> >> + printf("\t\tEDID buffer ptr: 0x%02x\n", child->edid_ptr);
> >> >> + printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg);
> >> >> +
> >> >> + if (context->bdb->version < 158) {
> >> >> + printf("\t\tDVO2 Port: 0x%02x (%s)\n", child->dvo2_port, dvo_port(child->dvo2_port));
> >> >> + printf("\t\tI2C2 pin: 0x%02x\n", child->i2c2_pin);
> >> >> + printf("\t\tSlave2 address: 0x%02x\n", child->slave2_addr);
> >> >> + printf("\t\tDDC2 pin: 0x%02x\n", child->ddc2_pin);
> >> >> + } else {
> >> >> + printf("\t\tEFP routed through dock: %s\n", YESNO(child->efp_routed));
> >> >> + printf("\t\tLane reversal: %s\n", YESNO(child->lane_reversal));
> >> >> + printf("\t\tOnboard LSPCON: %s\n", YESNO(child->lspcon));
> >> >> + printf("\t\tIboost enable: %s\n", YESNO(child->iboost));
> >> >> + printf("\t\tHPD sense invert: %s\n", YESNO(child->hpd_invert));
> >> >> + printf("\t\tHDMI compatible? %s\n", YESNO(child->hdmi_support));
> >> >> + printf("\t\tDP compatible? %s\n", YESNO(child->dp_support));
> >> >> + printf("\t\tTMDS compatible? %s\n", YESNO(child->tmds_support));
> >> >> + printf("\t\tAux channel: 0x%02x\n", child->aux_channel);
> >> >> + printf("\t\tDongle detect: 0x%02x\n", child->dongle_detect);
> >> >
> >> > The version of the spec I have at hand says aux and dongle are
> >> > already part of version 155.
> >>
> >> Seems like dvo2/i2c2/slave2/ddc2 were converted to flags at 155. Okay if
> >> I just change the condition above from < 158 to < 155?
> >
> > Aye.
> >
> > I didn't trawl through all the gritty details of the entire series, but
> > what I do see I like, so for the series
> > Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Thanks, pushed the lot.
>
> > I wonder if we should add more version checks so that we wouldn't dump
> > things that aren't actually specified? One crazy idea I had is that we
> > could define a parallel structure which would have a matching u8 member
> > to everything in the child_device_config, and we would initialize
> > each member with the correct version number. Then we could have some
> > kind of nice dump macro/function that checks the current VBT version
> > against the number from said parallel structure.
>
> Overengineering? ;)
Possibly. But it seems like a much nicer way to go about it that
sprinking 'if (version >= ...)' checks all over. Although I guess
we could also just pass the hardcoded minimum version to that
macro/function I was thinking we'd add.
>
> BR,
> Jani.
>
>
> >
> >>
> >> BR,
> >> Jani.
> >>
> >>
> >> >
> >> >> + }
> >> >> +
> >> >> + printf("\t\tPipe capabilities: 0x%02x\n", child->pipe_cap);
> >> >> + printf("\t\tSDVO stall signal available: %s\n", YESNO(child->sdvo_stall));
> >> >> + printf("\t\tHotplu connect status: 0x%02x\n", child->hpd_status);
> >> > ^
> >> > Pre-existing typo
> >> >
> >> >> + printf("\t\tIntegrated encoder instead of SDVO: %s\n", YESNO(child->integrated_encoder));
> >> >> + printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring);
> >> >> +
> >> >> + if (context->bdb->version < 171) {
> >> >> + printf("\t\tDVO2 wiring: 0x%02x\n", child->dvo2_wiring);
> >> >> + } else {
> >> >> + printf("\t\tMIPI bridge type: %02x (%s)\n", child->mipi_bridge_type,
> >> >> + mipi_bridge_type(child->mipi_bridge_type));
> >> >> }
> >> >>
> >> >> + printf("\t\tDevice class extendsion: 0x%02x\n", child->extended_type);
> >> > ^
> >> > ditto
> >> >
> >> >> + printf("\t\tDVO function: 0x%02x\n", child->dvo_function);
> >> >> +
> >> >> if (context->bdb->version >= 195) {
> >> >> - printf("\t\tDP USB type C support: %s\n", YESNO(efp->dp_usb_type_c));
> >> >> - printf("\t\t2X DP GPIO index: 0x%02x\n", efp->dp_gpio_index);
> >> >> - printf("\t\t2X DP GPIO pin number: 0x%02x\n", efp->dp_gpio_pin_num);
> >> >> + printf("\t\tDP USB type C support: %s\n", YESNO(child->dp_usb_type_c));
> >> >> + printf("\t\t2X DP GPIO index: 0x%02x\n", child->dp_gpio_index);
> >> >> + printf("\t\t2X DP GPIO pin number: 0x%02x\n", child->dp_gpio_pin_num);
> >> >> }
> >> >>
> >> >> if (context->bdb->version >= 196) {
> >> >> - printf("\t\tIBoost level for HDMI: 0x%02x\n", efp->hdmi_iboost_level);
> >> >> - printf("\t\tIBoost level for DP/eDP: 0x%02x\n", efp->dp_iboost_level);
> >> >> + printf("\t\tIBoost level for HDMI: 0x%02x\n", child->hdmi_iboost_level);
> >> >> + printf("\t\tIBoost level for DP/eDP: 0x%02x\n", child->dp_iboost_level);
> >> >> }
> >> >> }
> >> >>
> >> >> --
> >> >> 2.11.0
> >>
> >> --
> >> Jani Nikula, Intel Open Source Technology Center
>
> --
> Jani Nikula, Intel Open Source Technology Center
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2017-10-20 13:49 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-19 15:22 [PATCH i-g-t 0/8] tools/intel_vbt_decode: refactoring and cleanups Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 1/8] tools/intel_vbt_decode: make a copy of child devices before dumping Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 2/8] tools/intel_vbt_decode: update dvo port name dumping Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 3/8] tools/intel_vbt_decode: use %.*s instead of duplicating a string Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 4/8] tools/intel_vbt_decode: abstract DSI bridge type dump Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 5/8] tools/intel_vbt_decode: unify child device printing across versions Jani Nikula
2017-10-19 17:24 ` Ville Syrjälä
2017-10-20 10:56 ` Jani Nikula
2017-10-20 11:33 ` Ville Syrjälä
2017-10-20 13:17 ` Jani Nikula
2017-10-20 13:49 ` Ville Syrjälä
2017-10-19 15:22 ` [PATCH i-g-t 6/8] tools/intel_vbt_decode: unify legacy child device block dumping Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 7/8] tools/intel_vbt_decode: dump more child device data for version < 152 Jani Nikula
2017-10-19 15:22 ` [PATCH i-g-t 8/8] tools/intel_vbt_decode: abstract child devices printing more Jani Nikula
2017-10-19 16:52 ` ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: refactoring and cleanups Patchwork
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.