drm/i915: clean up dsi sequences
Subsystems (2)
v2 cover drm/i915: clean up dsi sequences
v2 of an old series, addressing issues pointed out by Ville.
BR,
Jani.
Jani Nikula (7):
drm/i915/dsi: don't debug log "missing" sequences drm/i915/dsi: add debug logging to element execution drm/i915/dsi: add skip functions for spi and pmic elements drm/i915/dsi: update reset and power sequences in panel
prepare/unprepare hooks
drm/i915/dsi: run backlight on/off sequences in panel enable/disable
hooks
drm/i915/bios: log about presence of DSI sequences we do not run drm/i915/dsi: double check element parsing against size if present
drivers/gpu/drm/i915/intel_bios.c | 4 +++ drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 48 +++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 7 deletions(-)
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 1/7 drm/i915/dsi: don't debug log "missing" sequences
This is not interesting. They are not "missing", they are just not part of the VBT sequences for the panel.
--- drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c +1 -4
@@ -385,11 +385,8 @@ static void generic_exec_sequence(struct drm_panel *panel, enum mipi_seq seq_id)return ; data = dev_priv->vbt.dsi.sequence[seq_id]; -if (!data) { -DRM_DEBUG_KMS ("MIPI sequence %d - %s not available\n" , - seq_id,sequence_name (seq_id)); +if (!data)return ; - }WARN_ON (*data != seq_id);
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 2/7 drm/i915/dsi: add debug logging to element execution
In reply to Jani NikulaJust simple breadcrumbs for now. While at it, rename the i2c skip function.
--- drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c +10 -2
@@ -126,6 +126,8 @@ static const u8 *mipi_exec_send_packet(struct intel_dsi *intel_dsi,u16 len;enum port port; +DRM_DEBUG_KMS ("\n" ); + flags = *data++; type = *data++;
@@ -199,6 +201,8 @@ static const u8 *mipi_exec_delay(struct intel_dsi *intel_dsi, const u8 *data) {u32 delay = *((const u32 *) data); +DRM_DEBUG_KMS ("\n" ); +usleep_range (delay, delay +10 ); data +=4 ;
@@ -307,6 +311,8 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)u8 gpio_source, gpio_index;bool value; +DRM_DEBUG_KMS ("\n" ); +if (dev_priv->vbt.dsi.seq_version >=3 ) data++;
@@ -331,8 +337,10 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)return data; } -static const u8 *mipi_exec_i2c_skip (struct intel_dsi *intel_dsi,const u8 *data) +static const u8 *mipi_exec_i2c (struct intel_dsi *intel_dsi,const u8 *data) { +DRM_DEBUG_KMS ("Skipping I2C element execution\n" ); +return data + *(data +6 ) +7 ; }
@@ -342,7 +350,7 @@ static const fn_mipi_elem_exec exec_elem[] = { [MIPI_SEQ_ELEM_SEND_PKT] = mipi_exec_send_packet, [MIPI_SEQ_ELEM_DELAY] = mipi_exec_delay, [MIPI_SEQ_ELEM_GPIO] = mipi_exec_gpio, - [MIPI_SEQ_ELEM_I2C] = mipi_exec_i2c_skip, + [MIPI_SEQ_ELEM_I2C] = mipi_exec_i2c, };/*
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 3/7 drm/i915/dsi: add skip functions for spi and pmic elements
In reply to Jani NikulaIn sequence block v3 these are gracefully skipped anyway, but add the functions so we can have some debug breadcrumbs.
v2: the pmic block is 15 bytes (Ville)
--- drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c +16 -0
@@ -344,6 +344,20 @@ static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)return data + *(data +6 ) +7 ; } +static const u8 *mipi_exec_spi (struct intel_dsi *intel_dsi,const u8 *data) +{ +DRM_DEBUG_KMS ("Skipping SPI element execution\n" ); + +return data + *(data +5 ) +6 ; +} + +static const u8 *mipi_exec_pmic (struct intel_dsi *intel_dsi,const u8 *data) +{ +DRM_DEBUG_KMS ("Skipping PMIC element execution\n" ); + +return data +15 ; +} +typedef const u8 * (*fn_mipi_elem_exec )(struct intel_dsi *intel_dsi,const u8 *data);static const fn_mipi_elem_exec exec_elem[] = {
@@ -351,6 +365,8 @@ static const fn_mipi_elem_exec exec_elem[] = { [MIPI_SEQ_ELEM_DELAY] = mipi_exec_delay, [MIPI_SEQ_ELEM_GPIO] = mipi_exec_gpio, [MIPI_SEQ_ELEM_I2C] = mipi_exec_i2c, + [MIPI_SEQ_ELEM_SPI] = mipi_exec_spi, + [MIPI_SEQ_ELEM_PMIC] = mipi_exec_pmic, };/*
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 4/7 drm/i915/dsi: update reset and power sequences in panel prepare/unprepare hooks
In reply to Jani NikulaBased on the documentation alone, it's anyone's guess when exactly we should be running these sequences. Add power on/off sequences where they feel logical and update assert/deassert reset. The drm panel hooks don't currently offer us more granularity anyway.
v2: update assert/deassert reset as well (Ville)
--- drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c +4 -1
@@ -459,6 +459,8 @@ static void generic_exec_sequence(struct drm_panel *panel, enum mipi_seq seq_id)static int vbt_panel_prepare (struct drm_panel *panel) {generic_exec_sequence (panel,MIPI_SEQ_ASSERT_RESET ); +generic_exec_sequence (panel,MIPI_SEQ_POWER_ON ); +generic_exec_sequence (panel,MIPI_SEQ_DEASSERT_RESET );generic_exec_sequence (panel,MIPI_SEQ_INIT_OTP );return 0 ;
@@ -466,7 +468,8 @@ static int vbt_panel_prepare(struct drm_panel *panel)static int vbt_panel_unprepare (struct drm_panel *panel) { -generic_exec_sequence (panel,MIPI_SEQ_DEASSERT_RESET ); +generic_exec_sequence (panel,MIPI_SEQ_ASSERT_RESET ); +generic_exec_sequence (panel,MIPI_SEQ_POWER_OFF );return 0 ; }
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 5/7 drm/i915/dsi: run backlight on/off sequences in panel enable/disable hooks
In reply to Jani NikulaBased on the documentation alone, it's anyone's guess when exactly we should be running these sequences. Add them where it feels logical. The drm panel hooks don't currently offer us more granularity anyway.
--- drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c +2 -0
@@ -477,12 +477,14 @@ static int vbt_panel_unprepare(struct drm_panel *panel)static int vbt_panel_enable (struct drm_panel *panel) {generic_exec_sequence (panel,MIPI_SEQ_DISPLAY_ON ); +generic_exec_sequence (panel,MIPI_SEQ_BACKLIGHT_ON );return 0 ; }static int vbt_panel_disable (struct drm_panel *panel) { +generic_exec_sequence (panel,MIPI_SEQ_BACKLIGHT_OFF );generic_exec_sequence (panel,MIPI_SEQ_DISPLAY_OFF );return 0 ;
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 6/7 drm/i915/bios: log about presence of DSI sequences we do not run
In reply to Jani NikulaLeave behind some debugging clues in case some panels don't work properly.
--- drivers/gpu/drm/i915/intel_bios.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/gpu/drm/i915/intel_bios.c +4 -0
@@ -996,6 +996,10 @@ parse_mipi_sequence(struct drm_i915_private *dev_priv, goto err; } +/* Log about presence of sequences we won't run. */ +if (seq_id ==MIPI_SEQ_TEAR_ON || seq_id ==MIPI_SEQ_TEAR_OFF ) +DRM_DEBUG_KMS ("Unsupported sequence %u\n" , seq_id); + dev_priv->vbt.dsi.sequence[seq_id] = data + index;if (sequence->version >=3 )
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 7/7 drm/i915/dsi: double check element parsing against size if present
In reply to Jani NikulaBe a little paranoid in case the specs change or something.
--- drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c +8 -0
@@ -441,7 +441,15 @@ static void generic_exec_sequence(struct drm_panel *panel, enum mipi_seq seq_id) operation_size = *data++;if (mipi_elem_exec) { +const u8 *next = data + operation_size; + data =mipi_elem_exec (intel_dsi, data); + +/* Consistency check if we have size. */ +if (operation_size && data != next) { +DRM_ERROR ("Inconsistent operation size\n" ); +return ; + } }else if (operation_size) {/* We have size, skip. */ DRM_DEBUG_KMS("Unsupported MIPI operation byte %u\n",
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.BAT: warning for drm/i915: clean up dsi sequences
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/i915: clean up dsi sequences
URL : https://patchwork.freedesktop.org/series/12640/
State : warning
== Summary ==
Series 12640v1 drm/i915: clean up dsi sequences
https://patchwork.freedesktop.org/api/1.0/series/12640/revisions/1/mbox/
Test kms_pipe_crc_basic:
Subgroup hang-read-crc-pipe-a:
dmesg-warn -> PASS (fi-skl-6700k)
Subgroup nonblocking-crc-pipe-b-frame-sequence:
pass -> SKIP (fi-hsw-4770r)fi-bdw-5557u total:244 pass:229 dwarn:0 dfail:0 fail:0 skip:15 fi-bsw-n3050 total:244 pass:202 dwarn:0 dfail:0 fail:0 skip:42 fi-byt-n2820 total:244 pass:208 dwarn:0 dfail:0 fail:1 skip:35 fi-hsw-4770k total:244 pass:226 dwarn:0 dfail:0 fail:0 skip:18 fi-hsw-4770r total:244 pass:221 dwarn:0 dfail:0 fail:0 skip:23 fi-ivb-3520m total:244 pass:219 dwarn:0 dfail:0 fail:0 skip:25 fi-ivb-3770 total:244 pass:207 dwarn:0 dfail:0 fail:0 skip:37 fi-skl-6260u total:244 pass:230 dwarn:0 dfail:0 fail:0 skip:14 fi-skl-6700hq total:244 pass:221 dwarn:0 dfail:0 fail:1 skip:22 fi-skl-6700k total:244 pass:219 dwarn:1 dfail:0 fail:0 skip:24 fi-skl-6770hq total:244 pass:228 dwarn:1 dfail:0 fail:1 skip:14 fi-snb-2520m total:244 pass:208 dwarn:0 dfail:0 fail:0 skip:36 fi-snb-2600 total:244 pass:207 dwarn:0 dfail:0 fail:0 skip:37
Results at /archive/results/CI_IGT_test/Patchwork_2554/
0d6fa72a8c18ec6ab4dbabf5202b8d1cad840e04 drm-intel-nightly: 2016y-09m-19d-09h-28m-11s UTC integration manifest 13c9cdf drm/i915/dsi: double check element parsing against size if present
57a905b drm/i915/bios: log about presence of DSI sequences we do not run
c979437 drm/i915/dsi: run backlight on/off sequences in panel enable/disable hooks
248085c drm/i915/dsi: update reset and power sequences in panel prepare/unprepare hooks c34bc49 drm/i915/dsi: add skip functions for spi and pmic elementsc82ca7c2 drm/i915/dsi: add debug logging to element execution
b23a5c0 drm/i915/dsi: don't debug log "missing" sequences
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Quoted 1 line · Jani Nikula
v2 of an old series, addressing issues pointed out by Ville.
Entire series looks reasonable. Spec is vague, so hard to be 100% sure.
Quoted 21 lines
BR,
Jani.Jani Nikula (7):
drm/i915/dsi: don't debug log "missing" sequences drm/i915/dsi: add debug logging to element execution drm/i915/dsi: add skip functions for spi and pmic elements drm/i915/dsi: update reset and power sequences in panel
prepare/unprepare hooks
drm/i915/dsi: run backlight on/off sequences in panel enable/disable
hooks
drm/i915/bios: log about presence of DSI sequences we do not run drm/i915/dsi: double check element parsing against size if presentdrivers/gpu/drm/i915/intel_bios.c | 4 +++ drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 48 +++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 7 deletions(-)Signature · 1 line
2.1.4
Signature · 6 lines
Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Quoted 4 lines · Ville Syrjälä
Quoted 1 line · Jani Nikula
v2 of an old series, addressing issues pointed out by Ville.
Entire series looks reasonable. Spec is vague, so hard to be 100% sure.
We're about to find out, I pushed the lot. Thanks for the review.
BR,
Jani.
Quoted 24 lines
Reviewed-by Ville Syrjälä <[email protected]>Quoted 21 lines
BR,
Jani.Jani Nikula (7):
drm/i915/dsi: don't debug log "missing" sequences drm/i915/dsi: add debug logging to element execution drm/i915/dsi: add skip functions for spi and pmic elements drm/i915/dsi: update reset and power sequences in panel
prepare/unprepare hooks
drm/i915/dsi: run backlight on/off sequences in panel enable/disable
hooks
drm/i915/bios: log about presence of DSI sequences we do not run drm/i915/dsi: double check element parsing against size if presentdrivers/gpu/drm/i915/intel_bios.c | 4 +++ drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 48 +++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 7 deletions(-)Signature · 1 line
2.1.4
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx