diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2019-03-08 16:57:26 +0200 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2019-03-08 21:22:06 +0200 |
commit | d51cbd379f8ca9a46b5e426a989d59bddec96714 (patch) | |
tree | b157e95ead43bc53193eeb8e12f5a360f2772c37 /tools | |
parent | d15ad69be07a987d5c2ba408201b287adae8ca59 (diff) |
tools/intel_vbt_decode: Correctly decode v3 GPIO sequence
The v3 GPIO seq is three bytes, not two. Decode it correctly.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/intel_vbt_decode.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c index e6e06b1b..2c71f084 100644 --- a/tools/intel_vbt_decode.c +++ b/tools/intel_vbt_decode.c @@ -1151,7 +1151,7 @@ static void dump_mipi_config(struct context *context, printf("\t\tPanel power cycle delay: %d\n", pps->panel_power_cycle_delay); } -static const uint8_t *mipi_dump_send_packet(const uint8_t *data) +static const uint8_t *mipi_dump_send_packet(const uint8_t *data, uint8_t seq_version) { uint8_t flags, type; uint16_t len, i; @@ -1174,29 +1174,36 @@ static const uint8_t *mipi_dump_send_packet(const uint8_t *data) return data; } -static const uint8_t *mipi_dump_delay(const uint8_t *data) +static const uint8_t *mipi_dump_delay(const uint8_t *data, uint8_t seq_version) { printf("\t\tDelay: %u us\n", *((const uint32_t *)data)); return data + 4; } -static const uint8_t *mipi_dump_gpio(const uint8_t *data) +static const uint8_t *mipi_dump_gpio(const uint8_t *data, uint8_t seq_version) { - uint8_t index, flags; + uint8_t index, number, flags; - index = *data++; - flags = *data++; + if (seq_version >= 3) { + index = *data++; + number = *data++; + flags = *data++; - printf("\t\tGPIO index %u, source %d, set %d\n", - index, - (flags >> 1) & 3, - flags & 1); + printf("\t\tGPIO index %u, number %u, set %d\n", + index, number, flags & 1); + } else { + index = *data++; + flags = *data++; + + printf("\t\tGPIO index %u, source %d, set %d\n", + index, (flags >> 1) & 3, flags & 1); + } return data; } -static const uint8_t *mipi_dump_i2c(const uint8_t *data) +static const uint8_t *mipi_dump_i2c(const uint8_t *data, uint8_t seq_version) { uint8_t flags, index, bus, offset, len, i; uint16_t address; @@ -1218,7 +1225,7 @@ static const uint8_t *mipi_dump_i2c(const uint8_t *data) return data; } -typedef const uint8_t * (*fn_mipi_elem_dump)(const uint8_t *data); +typedef const uint8_t * (*fn_mipi_elem_dump)(const uint8_t *data, uint8_t seq_version); static const fn_mipi_elem_dump dump_elem[] = { [MIPI_SEQ_ELEM_SEND_PKT] = mipi_dump_send_packet, @@ -1279,7 +1286,7 @@ static const uint8_t *dump_sequence(const uint8_t *data, uint8_t seq_version) operation_size = *data++; if (mipi_elem_dump) { - data = mipi_elem_dump(data); + data = mipi_elem_dump(data, seq_version); } else if (operation_size) { /* We have size, skip. */ data += operation_size; |