* [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings
@ 2025-09-29 19:07 Ville Syrjala
2025-09-29 19:07 ` [PATCH i-g-t 1/6] tools/intel_vbt_decode: Introduce to_str() Ville Syrjala
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Ville Syrjala @ 2025-09-29 19:07 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Make it easier/safer to decode VBT values into a string representation.
Also decode a couple of new (or rather old) things.
Ville Syrjälä (6):
tools/intel_vbt_decode: Introduce to_str()
tools/intel_vbt_decode: Use to_str() more
tools/intel_vbt_decode: Convert eDP deocding to use to_str()
tools/intel_vbt_decode: Use panel_bits()
tools/intel_vbt_decode: Decode display refclk mode
tools/intel_vbt_decode: Decode the backlight control method type
tools/intel_vbt_decode.c | 264 ++++++++++++++++++---------------------
1 file changed, 123 insertions(+), 141 deletions(-)
--
2.49.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH i-g-t 1/6] tools/intel_vbt_decode: Introduce to_str()
2025-09-29 19:07 [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings Ville Syrjala
@ 2025-09-29 19:07 ` Ville Syrjala
2025-09-29 19:07 ` [PATCH i-g-t 2/6] tools/intel_vbt_decode: Use to_str() more Ville Syrjala
2025-09-29 19:20 ` [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings Ville Syrjälä
2 siblings, 0 replies; 7+ messages in thread
From: Ville Syrjala @ 2025-09-29 19:07 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Introduce a to_str() macro that gives us a standard way
to decode a value we got from the VBT into a string.
All the cases converted here were implemented as a custom
function to deal with out of bounds/sparse values. All of
that is now taken care of by to_str(), so the strings can
just be defined as an array.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
tools/intel_vbt_decode.c | 137 +++++++++++++++++----------------------
1 file changed, 60 insertions(+), 77 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index a4e76b7559d2..dbcba3b9cd3b 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -631,6 +631,17 @@ static bool panel_bool(unsigned int value, int panel_type)
return panel_bits(value, panel_type, 1);
}
+static const char *_to_str(const char * const strings[],
+ int num_strings, int value)
+{
+ if (value >= num_strings || strings[value] == NULL)
+ return "<unknown>";
+
+ return strings[value];
+}
+
+#define to_str(strings, value) _to_str((strings), ARRAY_SIZE(strings), (value))
+
static int decode_ssc_freq(struct context *context, bool alternate)
{
switch (intel_gen(context->devid)) {
@@ -705,26 +716,18 @@ static void dump_general_features(struct context *context,
printf("\tDP SSC dongle supported: %s\n", YESNO(features->dp_ssc_dongle_supported));
}
-static const char *inverter_type(u8 type)
-{
- switch (type) {
- case 0: return "none/external";
- case 1: return "I2C";
- case 2: return "PWM";
- default: return "<reserved>";
- }
-}
+static const char * const inverter_type_str[] = {
+ [0] = "none/external",
+ [1] = "I2C",
+ [2] = "PWM",
+};
-static const char *i2c_speed(u8 i2c_speed)
-{
- switch (i2c_speed) {
- case 0: return "100 kHz";
- case 1: return "50 kHz";
- case 2: return "400 kHz";
- case 3: return "1 MHz";
- default: return "<unknown>";
- }
-}
+static const char * const i2c_speed_str[] = {
+ [0] = "100 kHz",
+ [1] = "50 kHz",
+ [2] = "400 kHz",
+ [3] = "1 MHz",
+};
static void dump_backlight_info(struct context *context,
const struct bdb_block *block)
@@ -751,7 +754,7 @@ static void dump_backlight_info(struct context *context,
blc = &backlight->data[i];
printf("\t\tInverter type: %s (%u)\n",
- inverter_type(blc->type), blc->type);
+ to_str(inverter_type_str, blc->type), blc->type);
printf("\t\tActive low: %s\n", YESNO(blc->active_low_pwm));
printf("\t\tPWM freq: %u\n", blc->pwm_freq_hz);
printf("\t\tMinimum brightness: %u\n", blc->min_brightness);
@@ -759,7 +762,7 @@ static void dump_backlight_info(struct context *context,
if (blc->type == 1) {
printf("\t\tI2C pin: 0x%02x\n", blc->i2c_pin);
printf("\t\tI2C speed: %s (0x%02x)\n",
- i2c_speed(blc->i2c_speed), blc->i2c_speed);
+ to_str(i2c_speed_str, blc->i2c_speed), blc->i2c_speed);
printf("\t\tI2C address: 0x%02x\n", blc->i2c_address);
printf("\t\tI2C command: 0x%02x\n", blc->i2c_command);
}
@@ -1008,19 +1011,11 @@ static const char *aux_ch(uint8_t aux_ch)
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 const char * const mipi_bridge_type_str[] = {
+ [1] = "ASUS",
+ [2] = "Toshiba",
+ [3] = "Renesas",
+};
static void dump_hmdi_max_data_rate(uint8_t hdmi_max_data_rate)
{
@@ -1090,40 +1085,28 @@ static void dump_dp_max_link_rate(uint16_t version, uint8_t dp_max_link_rate)
link_rate / 100.0f, dp_max_link_rate);
}
-static const char *dp_vswing(u8 vswing)
-{
- switch (vswing) {
- case 0: return "0.4V";
- case 1: return "0.6V";
- case 2: return "0.8V";
- case 3: return "1.2V";
- default: return "<unknown>";
- }
-}
+static const char * const dp_vswing_str[] = {
+ [0] = "0.4V",
+ [1] = "0.6V",
+ [2] = "0.8V",
+ [3] = "1.2V",
+};
-static const char *dp_preemph(u8 preemph)
-{
- switch (preemph) {
- case 0: return "0dB";
- case 1: return "3.5dB";
- case 2: return "6dB";
- case 3: return "9.5dB";
- default: return "<unknown>";
- }
-}
+static const char * const dp_preemph_str[] = {
+ [0] = "0dB",
+ [1] = "3.5dB",
+ [2] = "6dB",
+ [3] = "9.5dB",
+};
-static const char *hdmi_frl_rate(u8 frl_rate)
-{
- switch (frl_rate) {
- case 0: return "FRL not supported";
- case 1: return "3 GT/s";
- case 2: return "6 GT/s";
- case 3: return "8 GT/s";
- case 4: return "10 GT/s";
- case 5: return "12 GT/s";
- default: return "<unknown>";
- }
-}
+static const char * const hdmi_frl_rate_str[] = {
+ [0] = "FRL not supported",
+ [1] = "3 GT/s",
+ [2] = "6 GT/s",
+ [3] = "8 GT/s",
+ [4] = "10 GT/s",
+ [5] = "12 GT/s",
+};
static void dump_child_device(struct context *context,
const struct child_device_config *child)
@@ -1142,27 +1125,27 @@ static void dump_child_device(struct context *context,
printf("\t\tSignature: %.*s\n", (int)sizeof(child->device_id), child->device_id);
} else {
printf("\t\tI2C speed: %s (0x%02x)\n",
- i2c_speed(child->i2c_speed), child->i2c_speed);
+ to_str(i2c_speed_str, child->i2c_speed), child->i2c_speed);
if (context->bdb->version >= 158) {
printf("\t\tDP onboard redriver:\n");
printf("\t\t\tpresent: %s\n",
YESNO((child->dp_onboard_redriver_present)));
printf("\t\t\tvswing: %s (0x%x)\n",
- dp_vswing(child->dp_onboard_redriver_vswing),
+ to_str(dp_vswing_str, child->dp_onboard_redriver_vswing),
child->dp_onboard_redriver_vswing);
printf("\t\t\tpre-emphasis: %s (0x%x)\n",
- dp_preemph(child->dp_onboard_redriver_preemph),
+ to_str(dp_preemph_str, child->dp_onboard_redriver_preemph),
child->dp_onboard_redriver_preemph);
printf("\t\tDP ondock redriver:\n");
printf("\t\t\tpresent: %s\n",
YESNO((child->dp_ondock_redriver_present)));
printf("\t\t\tvswing: %s (0x%x)\n",
- dp_vswing(child->dp_ondock_redriver_vswing),
+ to_str(dp_vswing_str, child->dp_ondock_redriver_vswing),
child->dp_ondock_redriver_vswing);
printf("\t\t\tpre-emphasis: %s (0x%x)\n",
- dp_preemph(child->dp_ondock_redriver_preemph),
+ to_str(dp_preemph_str, child->dp_ondock_redriver_preemph),
child->dp_ondock_redriver_preemph);
}
@@ -1196,7 +1179,7 @@ static void dump_child_device(struct context *context,
printf("\t\tHDMI Max FRL rate valid: %s\n",
YESNO(child->hdmi_max_frl_rate_valid));
printf("\t\tHDMI Max FRL rate: %s (0x%x)\n",
- hdmi_frl_rate(child->hdmi_max_frl_rate),
+ to_str(hdmi_frl_rate_str, child->hdmi_max_frl_rate),
child->hdmi_max_frl_rate);
}
}
@@ -1255,7 +1238,7 @@ static void dump_child_device(struct context *context,
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));
+ to_str(mipi_bridge_type_str, child->mipi_bridge_type));
}
printf("\t\tDevice class extension: 0x%02x\n", child->extended_type);
@@ -2425,10 +2408,10 @@ static void dump_edp(struct context *context,
printf("\t\t\tlanes: X%d\n",
edp->fast_link_params[i].lanes + 1);
printf("\t\t\tpre-emphasis: %s (0x%x)\n",
- dp_preemph(edp->fast_link_params[i].preemphasis),
+ to_str(dp_preemph_str, edp->fast_link_params[i].preemphasis),
edp->fast_link_params[i].preemphasis);
printf("\t\t\tvswing: %s (0x%x)\n",
- dp_vswing(edp->fast_link_params[i].vswing),
+ to_str(dp_vswing_str, edp->fast_link_params[i].vswing),
edp->fast_link_params[i].vswing);
if (context->bdb->version >= 162)
@@ -2477,10 +2460,10 @@ static void dump_edp(struct context *context,
printf("\t\tFull link params:\n");
printf("\t\t\tpre-emphasis: %s (0x%x)\n",
- dp_preemph(edp->full_link_params[i].preemphasis),
+ to_str(dp_preemph_str, edp->full_link_params[i].preemphasis),
edp->full_link_params[i].preemphasis);
printf("\t\t\tvswing: %s (0x%x)\n",
- dp_vswing(edp->full_link_params[i].vswing),
+ to_str(dp_vswing_str, edp->full_link_params[i].vswing),
edp->full_link_params[i].vswing);
}
--
2.49.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH i-g-t 2/6] tools/intel_vbt_decode: Use to_str() more
2025-09-29 19:07 [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings Ville Syrjala
2025-09-29 19:07 ` [PATCH i-g-t 1/6] tools/intel_vbt_decode: Introduce to_str() Ville Syrjala
@ 2025-09-29 19:07 ` Ville Syrjala
2025-09-29 19:20 ` [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings Ville Syrjälä
2 siblings, 0 replies; 7+ messages in thread
From: Ville Syrjala @ 2025-09-29 19:07 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Convert all the naked string array dereferences to to_str()
instead. Not strictly necessary in these cases (since the
VBT bitfields doen't have unused values) but it seems better
to stick to the same formula for all decoding.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
tools/intel_vbt_decode.c | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index dbcba3b9cd3b..2f228fcd14b7 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -655,7 +655,7 @@ static int decode_ssc_freq(struct context *context, bool alternate)
}
}
-static const char * const panel_fitting[] = {
+static const char * const panel_fitting_str[] = {
[0] = "disabled",
[1] = "text only",
[2] = "graphics only",
@@ -668,7 +668,7 @@ static void dump_general_features(struct context *context,
const struct bdb_general_features *features = block_data(block);
printf("\tPanel fitting: %s (0x%x)\n",
- panel_fitting[features->panel_fitting], features->panel_fitting);
+ to_str(panel_fitting_str, features->panel_fitting), features->panel_fitting);
printf("\tFlexaim: %s\n", YESNO(features->flexaim));
printf("\tMessage: %s\n", YESNO(features->msg_enable));
printf("\tClear screen: %d\n", features->clear_screen);
@@ -1504,28 +1504,28 @@ static void dump_legacy_child_devices(struct context *context,
child_dev_num, defs->child_dev_size);
}
-static const char * const channel_type[] = {
+static const char * const channel_type_str[] = {
[0] = "automatic",
[1] = "single",
[2] = "dual",
[3] = "reserved",
};
-static const char * const dps_type[] = {
+static const char * const dps_type_str[] = {
[0] = "static DRRS",
[1] = "D2PO",
[2] = "seamless DRRS",
[3] = "reserved",
};
-static const char * const blt_type[] = {
+static const char * const blt_type_str[] = {
[0] = "default",
[1] = "CCFL",
[2] = "LED",
[3] = "reserved",
};
-static const char * const pos_type[] = {
+static const char * const pos_type_str[] = {
[0] = "inside shell",
[1] = "outside shell",
[2] = "reserved",
@@ -1562,7 +1562,7 @@ static void dump_lfp_options(struct context *context,
val = panel_bits(options->lvds_panel_channel_bits, i, 2);
printf("\t\tChannel type: %s (0x%x)\n",
- channel_type[val], val);
+ to_str(channel_type_str, val), val);
printf("\t\tSSC: %s\n",
YESNO(panel_bool(options->ssc_bits, i)));
@@ -1586,11 +1586,11 @@ static void dump_lfp_options(struct context *context,
val = panel_bits(options->dps_panel_type_bits, i, 2);
printf("\t\tDPS type: %s (0x%x)\n",
- dps_type[val], val);
+ to_str(dps_type_str, val), val);
val = panel_bits(options->blt_control_type_bits, i, 2);
printf("\t\tBacklight type: %s (0x%x)\n",
- blt_type[val], val);
+ to_str(blt_type_str, val), val);
if (context->bdb->version < 200)
continue;
@@ -1610,7 +1610,7 @@ static void dump_lfp_options(struct context *context,
val = panel_bits((options->position), i, 2);
printf("\t\tPanel position: %s (0x%x)\n",
- pos_type[val], val);
+ to_str(pos_type_str, val), val);
}
}
@@ -1807,7 +1807,7 @@ static void dump_lfp_data(struct context *context,
free(ptrs_block);
}
-static const char * const lvds_config[] = {
+static const char * const lvds_config_str[] = {
[BDB_DRIVER_FEATURE_NO_LVDS] = "No LVDS",
[BDB_DRIVER_FEATURE_INT_LVDS] = "Integrated LVDS",
[BDB_DRIVER_FEATURE_SDVO_LVDS] = "SDVO LVDS",
@@ -1869,7 +1869,7 @@ static void dump_driver_feature(struct context *context,
printf("\tCRT hotplug: %s\n", YESNO(feature->crt_hotplug));
printf("\tLVDS config: %s (0x%x)\n",
- lvds_config[feature->lvds_config], feature->lvds_config);
+ to_str(lvds_config_str, feature->lvds_config), feature->lvds_config);
printf("\tTV hotplug: %s\n",
YESNO(feature->tv_hotplug));
@@ -2325,11 +2325,11 @@ static void dump_efp_list(struct context *context,
}
}
-static const char * const underscan_overscan[] = {
- "Neither",
- "Underscan/Overscan",
- "Overscan only",
- "Underscan only",
+static const char * const underscan_overscan_str[] = {
+ [0] = "Neither",
+ [1] = "Underscan/Overscan",
+ [2] = "Overscan only",
+ [3] = "Underscan only",
};
static void dump_tv_options(struct context *context,
@@ -2342,9 +2342,9 @@ static void dump_tv_options(struct context *context,
printf("\tAdd modes to avoid overscan issue: %s\n",
YESNO(tv->add_modes_to_avoid_overscan_issue));
printf("\tUndescan/Overscan for HDTV via DVI: %s\n",
- underscan_overscan[tv->underscan_overscan_hdtv_dvi]);
+ to_str(underscan_overscan_str, tv->underscan_overscan_hdtv_dvi));
printf("\tUndescan/Overscan for HDTV via component: %s\n",
- underscan_overscan[tv->underscan_overscan_hdtv_component]);
+ to_str(underscan_overscan_str, tv->underscan_overscan_hdtv_component));
}
static void dump_edp(struct context *context,
--
2.49.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings
2025-09-29 19:07 [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings Ville Syrjala
2025-09-29 19:07 ` [PATCH i-g-t 1/6] tools/intel_vbt_decode: Introduce to_str() Ville Syrjala
2025-09-29 19:07 ` [PATCH i-g-t 2/6] tools/intel_vbt_decode: Use to_str() more Ville Syrjala
@ 2025-09-29 19:20 ` Ville Syrjälä
2 siblings, 0 replies; 7+ messages in thread
From: Ville Syrjälä @ 2025-09-29 19:20 UTC (permalink / raw)
To: igt-dev
On Mon, Sep 29, 2025 at 10:07:15PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Make it easier/safer to decode VBT values into a string representation.
>
> Also decode a couple of new (or rather old) things.
Please ignore. Incomplete series because gnome-keyring barfed yet again
in the middle of the series :/ I'll try to cook up some kind of a retry
kludge to make it more realiable...
>
> Ville Syrjälä (6):
> tools/intel_vbt_decode: Introduce to_str()
> tools/intel_vbt_decode: Use to_str() more
> tools/intel_vbt_decode: Convert eDP deocding to use to_str()
> tools/intel_vbt_decode: Use panel_bits()
> tools/intel_vbt_decode: Decode display refclk mode
> tools/intel_vbt_decode: Decode the backlight control method type
>
> tools/intel_vbt_decode.c | 264 ++++++++++++++++++---------------------
> 1 file changed, 123 insertions(+), 141 deletions(-)
>
> --
> 2.49.1
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings
@ 2025-09-29 19:21 Ville Syrjala
2025-09-30 8:27 ` Jani Nikula
0 siblings, 1 reply; 7+ messages in thread
From: Ville Syrjala @ 2025-09-29 19:21 UTC (permalink / raw)
To: igt-dev
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Make it easier/safer to decode VBT values into a string representation.
Also decode a couple of new (or rather old) things.
Ville Syrjälä (6):
tools/intel_vbt_decode: Introduce to_str()
tools/intel_vbt_decode: Use to_str() more
tools/intel_vbt_decode: Convert eDP deocding to use to_str()
tools/intel_vbt_decode: Use panel_bits()
tools/intel_vbt_decode: Decode display refclk mode
tools/intel_vbt_decode: Decode the backlight control method type
tools/intel_vbt_decode.c | 264 ++++++++++++++++++---------------------
1 file changed, 123 insertions(+), 141 deletions(-)
--
2.49.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings
2025-09-29 19:21 Ville Syrjala
@ 2025-09-30 8:27 ` Jani Nikula
2025-10-02 17:36 ` Ville Syrjälä
0 siblings, 1 reply; 7+ messages in thread
From: Jani Nikula @ 2025-09-30 8:27 UTC (permalink / raw)
To: Ville Syrjala, igt-dev
On Mon, 29 Sep 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Make it easier/safer to decode VBT values into a string representation.
>
> Also decode a couple of new (or rather old) things.
I left a couple of comments, but overall
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> Ville Syrjälä (6):
> tools/intel_vbt_decode: Introduce to_str()
> tools/intel_vbt_decode: Use to_str() more
> tools/intel_vbt_decode: Convert eDP deocding to use to_str()
> tools/intel_vbt_decode: Use panel_bits()
> tools/intel_vbt_decode: Decode display refclk mode
> tools/intel_vbt_decode: Decode the backlight control method type
>
> tools/intel_vbt_decode.c | 264 ++++++++++++++++++---------------------
> 1 file changed, 123 insertions(+), 141 deletions(-)
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings
2025-09-30 8:27 ` Jani Nikula
@ 2025-10-02 17:36 ` Ville Syrjälä
0 siblings, 0 replies; 7+ messages in thread
From: Ville Syrjälä @ 2025-10-02 17:36 UTC (permalink / raw)
To: Jani Nikula; +Cc: igt-dev
On Tue, Sep 30, 2025 at 11:27:37AM +0300, Jani Nikula wrote:
> On Mon, 29 Sep 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Make it easier/safer to decode VBT values into a string representation.
> >
> > Also decode a couple of new (or rather old) things.
>
> I left a couple of comments, but overall
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Thanks.
I dropepd the CABC nonsense, and added Kamil's value<0 check
while pushing.
>
> >
> > Ville Syrjälä (6):
> > tools/intel_vbt_decode: Introduce to_str()
> > tools/intel_vbt_decode: Use to_str() more
> > tools/intel_vbt_decode: Convert eDP deocding to use to_str()
> > tools/intel_vbt_decode: Use panel_bits()
> > tools/intel_vbt_decode: Decode display refclk mode
> > tools/intel_vbt_decode: Decode the backlight control method type
> >
> > tools/intel_vbt_decode.c | 264 ++++++++++++++++++---------------------
> > 1 file changed, 123 insertions(+), 141 deletions(-)
>
> --
> Jani Nikula, Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-10-02 17:36 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-29 19:07 [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings Ville Syrjala
2025-09-29 19:07 ` [PATCH i-g-t 1/6] tools/intel_vbt_decode: Introduce to_str() Ville Syrjala
2025-09-29 19:07 ` [PATCH i-g-t 2/6] tools/intel_vbt_decode: Use to_str() more Ville Syrjala
2025-09-29 19:20 ` [PATCH i-g-t 0/6] tools/intel_vbt_decode: Improve decoding to strings Ville Syrjälä
-- strict thread matches above, loose matches on Subject: below --
2025-09-29 19:21 Ville Syrjala
2025-09-30 8:27 ` Jani Nikula
2025-10-02 17:36 ` Ville Syrjälä
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox