All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
@ 2020-01-03  0:00 Vivek Kasireddy
  2020-01-03  0:52 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
                   ` (9 more replies)
  0 siblings, 10 replies; 22+ messages in thread
From: Vivek Kasireddy @ 2020-01-03  0:00 UTC (permalink / raw)
  To: intel-gfx; +Cc: Deepak M

Parsing the i2c element is mainly done to transfer the payload from the
MIPI sequence block to the relevant slave device. In some cases, the
commands that are part of the payload can be used to turn on the backlight.

This patch is actually a refactored version of this old patch:
https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html

In addition to the refactoring, the old patch is augmented by looking up
the i2c bus from ACPI NS instead of relying on the bus number provided
in the VBT.

Cc: Deepak M <m.deepak@intel.com>
Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Bob Paauwe <bob.j.paauwe@intel.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 93 ++++++++++++++++++++
 2 files changed, 96 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
index b15be5814599..5651bc8aa5c2 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.h
+++ b/drivers/gpu/drm/i915/display/intel_dsi.h
@@ -68,6 +68,9 @@ struct intel_dsi {
 	/* number of DSI lanes */
 	unsigned int lane_count;
 
+	/* i2c bus associated with the slave device */
+	int i2c_bus_num;
+
 	/*
 	 * video mode pixel format
 	 *
diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
index f90946c912ee..60441a5a3dba 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -83,6 +83,12 @@ static struct gpio_map vlv_gpio_table[] = {
 	{ VLV_GPIO_NC_11_PANEL1_BKLTCTL },
 };
 
+struct i2c_adapter_lookup {
+	u16 slave_addr;
+	struct intel_dsi *intel_dsi;
+	acpi_handle dev_handle;
+};
+
 #define CHV_GPIO_IDX_START_N		0
 #define CHV_GPIO_IDX_START_E		73
 #define CHV_GPIO_IDX_START_SW		100
@@ -375,8 +381,93 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
 	return data;
 }
 
+static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
+{
+	struct i2c_adapter_lookup *lookup = data;
+	struct intel_dsi *intel_dsi = lookup->intel_dsi;
+	struct acpi_resource_i2c_serialbus *sb;
+	struct i2c_adapter *adapter;
+	acpi_handle adapter_handle;
+	acpi_status status;
+
+	if (intel_dsi->i2c_bus_num >= 0 ||
+	    !i2c_acpi_get_i2c_resource(ares, &sb))
+		return 1;
+
+	if (lookup->slave_addr != sb->slave_address)
+		return 1;
+
+	status = acpi_get_handle(lookup->dev_handle,
+				 sb->resource_source.string_ptr,
+				 &adapter_handle);
+	if (ACPI_FAILURE(status))
+		return 1;
+
+	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
+	if (adapter)
+		intel_dsi->i2c_bus_num = adapter->nr;
+
+	return 1;
+}
+
 static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
 {
+	struct drm_device *dev = intel_dsi->base.base.dev;
+	struct i2c_adapter *adapter;
+	struct acpi_device *acpi_dev;
+	struct list_head resource_list;
+	struct i2c_adapter_lookup lookup;
+	struct i2c_msg msg;
+	int ret;
+	u8 vbt_i2c_bus_num = *(data + 2);
+	u16 slave_addr = *(u16 *)(data + 3);
+	u8 reg_offset = *(data + 5);
+	u8 payload_size = *(data + 6);
+	u8 *payload_data;
+
+	if (intel_dsi->i2c_bus_num < 0) {
+		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
+
+		acpi_dev = ACPI_COMPANION(&dev->pdev->dev);
+		if (acpi_dev) {
+			memset(&lookup, 0, sizeof(lookup));
+			lookup.slave_addr = slave_addr;
+			lookup.intel_dsi = intel_dsi;
+			lookup.dev_handle = acpi_device_handle(acpi_dev);
+
+			INIT_LIST_HEAD(&resource_list);
+			acpi_dev_get_resources(acpi_dev, &resource_list,
+					       i2c_adapter_lookup,
+					       &lookup);
+			acpi_dev_free_resource_list(&resource_list);
+		}
+	}
+
+	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
+	if (!adapter)
+		goto out;
+
+	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
+	if (!payload_data)
+		goto out;
+
+	payload_data[0] = reg_offset;
+	memcpy(&payload_data[1], (data + 7), payload_size);
+
+	msg.addr = slave_addr;
+	msg.flags = 0;
+	msg.len = payload_size + 1;
+	msg.buf = payload_data;
+
+	ret = i2c_transfer(adapter, &msg, 1);
+	if (ret < 0)
+		DRM_ERROR("i2c transfer failed");
+
+	kfree(payload_data);
+	i2c_put_adapter(adapter);
+
+	return data + payload_size + 7;
+out:
 	DRM_DEBUG_KMS("Skipping I2C element execution\n");
 
 	return data + *(data + 6) + 7;
@@ -664,6 +755,8 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
 	intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
 	intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
 
+	intel_dsi->i2c_bus_num = -1;
+
 	/* a regular driver would get the device in probe */
 	for_each_dsi_port(port, intel_dsi->ports) {
 		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
-- 
2.21.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
@ 2020-01-03  0:52 ` Patchwork
  2020-01-03 11:05 ` [Intel-gfx] [PATCH] " Hans de Goede
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-03  0:52 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
URL   : https://patchwork.freedesktop.org/series/71581/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7668 -> Patchwork_15983
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_15983 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_15983, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_15983:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live_gt_pm:
    - fi-kbl-7500u:       [PASS][1] -> [DMESG-WARN][2] +23 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-kbl-7500u/igt@i915_selftest@live_gt_pm.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-kbl-7500u/igt@i915_selftest@live_gt_pm.html

  * igt@i915_selftest@live_uncore:
    - fi-kbl-7500u:       [PASS][3] -> [DMESG-FAIL][4] +7 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-kbl-7500u/igt@i915_selftest@live_uncore.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-kbl-7500u/igt@i915_selftest@live_uncore.html

  
Known issues
------------

  Here are the changes found in Patchwork_15983 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-cfl-8700k:       [PASS][5] -> [INCOMPLETE][6] ([i915#505])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html
    - fi-skl-lmem:        [PASS][7] -> [INCOMPLETE][8] ([i915#671])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_selftest@live_blt:
    - fi-hsw-4770r:       [PASS][9] -> [DMESG-FAIL][10] ([i915#553] / [i915#725])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-byt-j1900:       [PASS][11] -> [DMESG-FAIL][12] ([i915#722])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-byt-j1900/igt@i915_selftest@live_gem_contexts.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-byt-j1900/igt@i915_selftest@live_gem_contexts.html

  
#### Possible fixes ####

  * igt@i915_selftest@live_active:
    - fi-kbl-r:           [DMESG-FAIL][13] -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-kbl-r/igt@i915_selftest@live_active.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-kbl-r/igt@i915_selftest@live_active.html

  * igt@i915_selftest@live_blt:
    - fi-byt-j1900:       [DMESG-FAIL][15] ([i915#725]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-byt-j1900/igt@i915_selftest@live_blt.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-byt-j1900/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem:
    - fi-bdw-5557u:       [FAIL][17] -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-bdw-5557u/igt@i915_selftest@live_gem.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-bdw-5557u/igt@i915_selftest@live_gem.html

  * igt@kms_chamelium@hdmi-crc-fast:
    - fi-icl-u2:          [FAIL][19] ([fdo#109635]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-icl-u2/igt@kms_chamelium@hdmi-crc-fast.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-icl-u2/igt@kms_chamelium@hdmi-crc-fast.html

  
#### Warnings ####

  * igt@i915_selftest@live_blt:
    - fi-hsw-4770:        [DMESG-FAIL][21] ([i915#553] / [i915#725]) -> [DMESG-FAIL][22] ([i915#725])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7668/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/fi-hsw-4770/igt@i915_selftest@live_blt.html

  
  [fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635
  [i915#505]: https://gitlab.freedesktop.org/drm/intel/issues/505
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671
  [i915#722]: https://gitlab.freedesktop.org/drm/intel/issues/722
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725


Participating hosts (48 -> 45)
------------------------------

  Additional (6): fi-skl-guc fi-bwr-2160 fi-cfl-8109u fi-kbl-8809g fi-bsw-kefka fi-kbl-7560u 
  Missing    (9): fi-ilk-m540 fi-hsw-4200u fi-hsw-peppy fi-bsw-cyan fi-ctg-p8600 fi-blb-e6850 fi-byt-clapper fi-bsw-nick fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7668 -> Patchwork_15983

  CI-20190529: 20190529
  CI_DRM_7668: e63e1b81764ac9d3edbf178821a6cbbc8d7eab9d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5357: a555a4b98f90dab655d24bb3d07e9291a8b8dac8 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_15983: 0dfa4d1be7d2eb1cdd22b358ea67d9727003beaf @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

0dfa4d1be7d2 drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15983/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
  2020-01-03  0:52 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
@ 2020-01-03 11:05 ` Hans de Goede
  2020-01-04  0:00   ` Vivek Kasireddy
  2020-01-04  1:09   ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2) Vivek Kasireddy
  2020-01-04  1:22 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2) Patchwork
                   ` (7 subsequent siblings)
  9 siblings, 2 replies; 22+ messages in thread
From: Hans de Goede @ 2020-01-03 11:05 UTC (permalink / raw)
  To: Vivek Kasireddy, intel-gfx; +Cc: Deepak M

Hi Vivek,

On 03-01-2020 01:00, Vivek Kasireddy wrote:
> Parsing the i2c element is mainly done to transfer the payload from the
> MIPI sequence block to the relevant slave device. In some cases, the
> commands that are part of the payload can be used to turn on the backlight.
> 
> This patch is actually a refactored version of this old patch:
> https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
> 
> In addition to the refactoring, the old patch is augmented by looking up
> the i2c bus from ACPI NS instead of relying on the bus number provided
> in the VBT.
> 
> Cc: Deepak M <m.deepak@intel.com>
> Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>

Thank you for this patch, I have been doing a lot of work to make
DSI panels on Bay Trail and Cherry Trail devices work better, as such
I've done a lot of testing of DSI panels. But I have never seen any
MIPI sequences actually use the i2c commands. May I ask how you have
tested this? Do you have a device which actually uses the i2c commands?

I also have some small review comments inline:

> ---
>   drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
>   drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 93 ++++++++++++++++++++
>   2 files changed, 96 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
> index b15be5814599..5651bc8aa5c2 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi.h
> +++ b/drivers/gpu/drm/i915/display/intel_dsi.h
> @@ -68,6 +68,9 @@ struct intel_dsi {
>   	/* number of DSI lanes */
>   	unsigned int lane_count;
>   
> +	/* i2c bus associated with the slave device */
> +	int i2c_bus_num;
> +
>   	/*
>   	 * video mode pixel format
>   	 *
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> index f90946c912ee..60441a5a3dba 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> @@ -83,6 +83,12 @@ static struct gpio_map vlv_gpio_table[] = {
>   	{ VLV_GPIO_NC_11_PANEL1_BKLTCTL },
>   };
>   
> +struct i2c_adapter_lookup {
> +	u16 slave_addr;
> +	struct intel_dsi *intel_dsi;
> +	acpi_handle dev_handle;
> +};
> +
>   #define CHV_GPIO_IDX_START_N		0
>   #define CHV_GPIO_IDX_START_E		73
>   #define CHV_GPIO_IDX_START_SW		100
> @@ -375,8 +381,93 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>   	return data;
>   }
>   
> +static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
> +{
> +	struct i2c_adapter_lookup *lookup = data;
> +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
> +	struct acpi_resource_i2c_serialbus *sb;
> +	struct i2c_adapter *adapter;
> +	acpi_handle adapter_handle;
> +	acpi_status status;
> +
> +	if (intel_dsi->i2c_bus_num >= 0 ||
> +	    !i2c_acpi_get_i2c_resource(ares, &sb))
> +		return 1;
> +
> +	if (lookup->slave_addr != sb->slave_address)
> +		return 1;
> +
> +	status = acpi_get_handle(lookup->dev_handle,
> +				 sb->resource_source.string_ptr,
> +				 &adapter_handle);
> +	if (ACPI_FAILURE(status))
> +		return 1;
> +
> +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
> +	if (adapter)
> +		intel_dsi->i2c_bus_num = adapter->nr;
> +
> +	return 1;
> +}
> +
>   static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
>   {
> +	struct drm_device *dev = intel_dsi->base.base.dev;
> +	struct i2c_adapter *adapter;
> +	struct acpi_device *acpi_dev;
> +	struct list_head resource_list;
> +	struct i2c_adapter_lookup lookup;
> +	struct i2c_msg msg;
> +	int ret;
> +	u8 vbt_i2c_bus_num = *(data + 2);
> +	u16 slave_addr = *(u16 *)(data + 3);
> +	u8 reg_offset = *(data + 5);
> +	u8 payload_size = *(data + 6);
> +	u8 *payload_data;
> +
> +	if (intel_dsi->i2c_bus_num < 0) {
> +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> +
> +		acpi_dev = ACPI_COMPANION(&dev->pdev->dev);
> +		if (acpi_dev) {
> +			memset(&lookup, 0, sizeof(lookup));
> +			lookup.slave_addr = slave_addr;
> +			lookup.intel_dsi = intel_dsi;
> +			lookup.dev_handle = acpi_device_handle(acpi_dev);
> +
> +			INIT_LIST_HEAD(&resource_list);
> +			acpi_dev_get_resources(acpi_dev, &resource_list,
> +					       i2c_adapter_lookup,
> +					       &lookup);
> +			acpi_dev_free_resource_list(&resource_list);
> +		}
> +	}
> +
> +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
> +	if (!adapter)
> +		goto out;

This should never happen, so you should put a DRM_DEV_WARN here.

> +
> +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
> +	if (!payload_data)
> +		goto out;
> +
> +	payload_data[0] = reg_offset;
> +	memcpy(&payload_data[1], (data + 7), payload_size);
> +
> +	msg.addr = slave_addr;
> +	msg.flags = 0;
> +	msg.len = payload_size + 1;
> +	msg.buf = payload_data;
> +
> +	ret = i2c_transfer(adapter, &msg, 1);
> +	if (ret < 0)
> +		DRM_ERROR("i2c transfer failed");

DRM_DEV_ERROR? And maybe some more info, like the register which
the transfer is going to + payload size?

> +
> +	kfree(payload_data);
> +	i2c_put_adapter(adapter);
> +

Just put out here, no need for the DRM_DEBUG (which should no
longer be a debug now that we implement this) below, since we
WARN or ERROR on all goto out; statements above.

out:

> +	return data + payload_size + 7;

And drop these 3 lines:

> +out:
>   	DRM_DEBUG_KMS("Skipping I2C element execution\n");
>   
>   	return data + *(data + 6) + 7;



> @@ -664,6 +755,8 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
>   	intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
>   	intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
>   
> +	intel_dsi->i2c_bus_num = -1;
> +
>   	/* a regular driver would get the device in probe */
>   	for_each_dsi_port(port, intel_dsi->ports) {
>   		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
> 

Regards,

Hans

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
  2020-01-03 11:05 ` [Intel-gfx] [PATCH] " Hans de Goede
@ 2020-01-04  0:00   ` Vivek Kasireddy
  2020-01-04 16:44     ` Hans de Goede
  2020-01-07 16:49     ` Ville Syrjälä
  2020-01-04  1:09   ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2) Vivek Kasireddy
  1 sibling, 2 replies; 22+ messages in thread
From: Vivek Kasireddy @ 2020-01-04  0:00 UTC (permalink / raw)
  To: Hans de Goede; +Cc: Deepak M, intel-gfx

On Fri, 3 Jan 2020 12:05:11 +0100
Hans de Goede <hdegoede@redhat.com> wrote:
Hi Hans,

> Hi Vivek,
> 
> On 03-01-2020 01:00, Vivek Kasireddy wrote:
> > Parsing the i2c element is mainly done to transfer the payload from
> > the MIPI sequence block to the relevant slave device. In some
> > cases, the commands that are part of the payload can be used to
> > turn on the backlight.
> > 
> > This patch is actually a refactored version of this old patch:
> > https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
> > 
> > In addition to the refactoring, the old patch is augmented by
> > looking up the i2c bus from ACPI NS instead of relying on the bus
> > number provided in the VBT.
> > 
> > Cc: Deepak M <m.deepak@intel.com>
> > Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> > Cc: Matt Roper <matthew.d.roper@intel.com>
> > Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> > Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>  
> 
> Thank you for this patch, I have been doing a lot of work to make
> DSI panels on Bay Trail and Cherry Trail devices work better, as such
> I've done a lot of testing of DSI panels. But I have never seen any
> MIPI sequences actually use the i2c commands. May I ask how you have
> tested this? Do you have a device which actually uses the i2c
> commands?
Oh, they sure exist; we do have a device that uses i2c commands to turn
on the backlight that we have tested this patch on. 

> 
> I also have some small review comments inline:
> 
> > ---
> >   drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
> >   drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 93
> > ++++++++++++++++++++ 2 files changed, 96 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h
> > b/drivers/gpu/drm/i915/display/intel_dsi.h index
> > b15be5814599..5651bc8aa5c2 100644 ---
> > a/drivers/gpu/drm/i915/display/intel_dsi.h +++
> > b/drivers/gpu/drm/i915/display/intel_dsi.h @@ -68,6 +68,9 @@ struct
> > intel_dsi { /* number of DSI lanes */
> >   	unsigned int lane_count;
> >   
> > +	/* i2c bus associated with the slave device */
> > +	int i2c_bus_num;
> > +
> >   	/*
> >   	 * video mode pixel format
> >   	 *
> > diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> > b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c index
> > f90946c912ee..60441a5a3dba 100644 ---
> > a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c +++
> > b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c @@ -83,6 +83,12 @@
> > static struct gpio_map vlv_gpio_table[] = { {
> > VLV_GPIO_NC_11_PANEL1_BKLTCTL }, };
> >   
> > +struct i2c_adapter_lookup {
> > +	u16 slave_addr;
> > +	struct intel_dsi *intel_dsi;
> > +	acpi_handle dev_handle;
> > +};
> > +
> >   #define CHV_GPIO_IDX_START_N		0
> >   #define CHV_GPIO_IDX_START_E		73
> >   #define CHV_GPIO_IDX_START_SW		100
> > @@ -375,8 +381,93 @@ static const u8 *mipi_exec_gpio(struct
> > intel_dsi *intel_dsi, const u8 *data) return data;
> >   }
> >   
> > +static int i2c_adapter_lookup(struct acpi_resource *ares, void
> > *data) +{
> > +	struct i2c_adapter_lookup *lookup = data;
> > +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
> > +	struct acpi_resource_i2c_serialbus *sb;
> > +	struct i2c_adapter *adapter;
> > +	acpi_handle adapter_handle;
> > +	acpi_status status;
> > +
> > +	if (intel_dsi->i2c_bus_num >= 0 ||
> > +	    !i2c_acpi_get_i2c_resource(ares, &sb))
> > +		return 1;
> > +
> > +	if (lookup->slave_addr != sb->slave_address)
> > +		return 1;
> > +
> > +	status = acpi_get_handle(lookup->dev_handle,
> > +				 sb->resource_source.string_ptr,
> > +				 &adapter_handle);
> > +	if (ACPI_FAILURE(status))
> > +		return 1;
> > +
> > +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
> > +	if (adapter)
> > +		intel_dsi->i2c_bus_num = adapter->nr;
> > +
> > +	return 1;
> > +}
> > +
> >   static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const
> > u8 *data) {
> > +	struct drm_device *dev = intel_dsi->base.base.dev;
> > +	struct i2c_adapter *adapter;
> > +	struct acpi_device *acpi_dev;
> > +	struct list_head resource_list;
> > +	struct i2c_adapter_lookup lookup;
> > +	struct i2c_msg msg;
> > +	int ret;
> > +	u8 vbt_i2c_bus_num = *(data + 2);
> > +	u16 slave_addr = *(u16 *)(data + 3);
> > +	u8 reg_offset = *(data + 5);
> > +	u8 payload_size = *(data + 6);
> > +	u8 *payload_data;
> > +
> > +	if (intel_dsi->i2c_bus_num < 0) {
> > +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> > +
> > +		acpi_dev = ACPI_COMPANION(&dev->pdev->dev);
> > +		if (acpi_dev) {
> > +			memset(&lookup, 0, sizeof(lookup));
> > +			lookup.slave_addr = slave_addr;
> > +			lookup.intel_dsi = intel_dsi;
> > +			lookup.dev_handle =
> > acpi_device_handle(acpi_dev); +
> > +			INIT_LIST_HEAD(&resource_list);
> > +			acpi_dev_get_resources(acpi_dev,
> > &resource_list,
> > +					       i2c_adapter_lookup,
> > +					       &lookup);
> > +
> > acpi_dev_free_resource_list(&resource_list);
> > +		}
> > +	}
> > +
> > +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
> > +	if (!adapter)
> > +		goto out;  
> 
> This should never happen, so you should put a DRM_DEV_WARN here.
Ok, will do.

> 
> > +
> > +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
> > +	if (!payload_data)
> > +		goto out;
> > +
> > +	payload_data[0] = reg_offset;
> > +	memcpy(&payload_data[1], (data + 7), payload_size);
> > +
> > +	msg.addr = slave_addr;
> > +	msg.flags = 0;
> > +	msg.len = payload_size + 1;
> > +	msg.buf = payload_data;
> > +
> > +	ret = i2c_transfer(adapter, &msg, 1);
> > +	if (ret < 0)
> > +		DRM_ERROR("i2c transfer failed");  
> 
> DRM_DEV_ERROR? And maybe some more info, like the register which
> the transfer is going to + payload size?
Ok, adding extra info makes sense.

> 
> > +
> > +	kfree(payload_data);
> > +	i2c_put_adapter(adapter);
> > +  
> 
> Just put out here, no need for the DRM_DEBUG (which should no
> longer be a debug now that we implement this) below, since we
> WARN or ERROR on all goto out; statements above.
Ok, will do.

Thanks,
Vivek

> 
> out:
> 
> > +	return data + payload_size + 7;  
> 
> And drop these 3 lines:
> 
> > +out:
> >   	DRM_DEBUG_KMS("Skipping I2C element execution\n");
> >   
> >   	return data + *(data + 6) + 7;  
> 
> 
> 
> > @@ -664,6 +755,8 @@ bool intel_dsi_vbt_init(struct intel_dsi
> > *intel_dsi, u16 panel_id) intel_dsi->panel_off_delay =
> > pps->panel_off_delay / 10; intel_dsi->panel_pwr_cycle_delay =
> > pps->panel_power_cycle_delay / 10; 
> > +	intel_dsi->i2c_bus_num = -1;
> > +
> >   	/* a regular driver would get the device in probe */
> >   	for_each_dsi_port(port, intel_dsi->ports) {
> >   		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
> >   
> 
> Regards,
> 
> Hans
> 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2)
  2020-01-03 11:05 ` [Intel-gfx] [PATCH] " Hans de Goede
  2020-01-04  0:00   ` Vivek Kasireddy
@ 2020-01-04  1:09   ` Vivek Kasireddy
  2020-01-04 16:45     ` Hans de Goede
  1 sibling, 1 reply; 22+ messages in thread
From: Vivek Kasireddy @ 2020-01-04  1:09 UTC (permalink / raw)
  To: intel-gfx

Parsing the i2c element is mainly done to transfer the payload from the
MIPI sequence block to the relevant slave device. In some cases, the
commands that are part of the payload can be used to turn on the backlight.

This patch is actually a refactored version of this old patch:
https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html

In addition to the refactoring, the original patch is augmented by looking up
the i2c bus from ACPI NS instead of relying on the bus number provided
in the VBT.

v2:
- Add DRM_DEV_ERROR for invalid adapter and failed transfer and also
  drop the DRM_DEBUG that existed originally. (Hans)
- Add two gotos instead of one to clean things up properly.

CC: Hans de Goede <hdegoede@redhat.com>
Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Bob Paauwe <bob.j.paauwe@intel.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 99 +++++++++++++++++++-
 2 files changed, 100 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
index b15be5814599..5651bc8aa5c2 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.h
+++ b/drivers/gpu/drm/i915/display/intel_dsi.h
@@ -68,6 +68,9 @@ struct intel_dsi {
 	/* number of DSI lanes */
 	unsigned int lane_count;
 
+	/* i2c bus associated with the slave device */
+	int i2c_bus_num;
+
 	/*
 	 * video mode pixel format
 	 *
diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
index f90946c912ee..35fcef7c0d70 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -83,6 +83,12 @@ static struct gpio_map vlv_gpio_table[] = {
 	{ VLV_GPIO_NC_11_PANEL1_BKLTCTL },
 };
 
+struct i2c_adapter_lookup {
+	u16 slave_addr;
+	struct intel_dsi *intel_dsi;
+	acpi_handle dev_handle;
+};
+
 #define CHV_GPIO_IDX_START_N		0
 #define CHV_GPIO_IDX_START_E		73
 #define CHV_GPIO_IDX_START_SW		100
@@ -375,11 +381,98 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
 	return data;
 }
 
+static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
+{
+	struct i2c_adapter_lookup *lookup = data;
+	struct intel_dsi *intel_dsi = lookup->intel_dsi;
+	struct acpi_resource_i2c_serialbus *sb;
+	struct i2c_adapter *adapter;
+	acpi_handle adapter_handle;
+	acpi_status status;
+
+	if (intel_dsi->i2c_bus_num >= 0 ||
+	    !i2c_acpi_get_i2c_resource(ares, &sb))
+		return 1;
+
+	if (lookup->slave_addr != sb->slave_address)
+		return 1;
+
+	status = acpi_get_handle(lookup->dev_handle,
+				 sb->resource_source.string_ptr,
+				 &adapter_handle);
+	if (ACPI_FAILURE(status))
+		return 1;
+
+	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
+	if (adapter)
+		intel_dsi->i2c_bus_num = adapter->nr;
+
+	return 1;
+}
+
 static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
 {
-	DRM_DEBUG_KMS("Skipping I2C element execution\n");
+	struct drm_device *drm_dev = intel_dsi->base.base.dev;
+	struct device *dev = &drm_dev->pdev->dev;
+	struct i2c_adapter *adapter;
+	struct acpi_device *acpi_dev;
+	struct list_head resource_list;
+	struct i2c_adapter_lookup lookup;
+	struct i2c_msg msg;
+	int ret;
+	u8 vbt_i2c_bus_num = *(data + 2);
+	u16 slave_addr = *(u16 *)(data + 3);
+	u8 reg_offset = *(data + 5);
+	u8 payload_size = *(data + 6);
+	u8 *payload_data;
+
+	if (intel_dsi->i2c_bus_num < 0) {
+		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
+
+		acpi_dev = ACPI_COMPANION(dev);
+		if (acpi_dev) {
+			memset(&lookup, 0, sizeof(lookup));
+			lookup.slave_addr = slave_addr;
+			lookup.intel_dsi = intel_dsi;
+			lookup.dev_handle = acpi_device_handle(acpi_dev);
+
+			INIT_LIST_HEAD(&resource_list);
+			acpi_dev_get_resources(acpi_dev, &resource_list,
+					       i2c_adapter_lookup,
+					       &lookup);
+			acpi_dev_free_resource_list(&resource_list);
+		}
+	}
 
-	return data + *(data + 6) + 7;
+	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
+	if (!adapter) {
+		DRM_DEV_ERROR(dev, "Cannot find a valid i2c bus for xfer\n");
+		goto err_bus;
+	}
+
+	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
+	if (!payload_data)
+		goto err_alloc;
+
+	payload_data[0] = reg_offset;
+	memcpy(&payload_data[1], (data + 7), payload_size);
+
+	msg.addr = slave_addr;
+	msg.flags = 0;
+	msg.len = payload_size + 1;
+	msg.buf = payload_data;
+
+	ret = i2c_transfer(adapter, &msg, 1);
+	if (ret < 0)
+		DRM_DEV_ERROR(dev,
+			      "Failed to xfer payload of size (%u) to reg (%u)\n",
+			      payload_size, reg_offset);
+
+	kfree(payload_data);
+err_alloc:
+	i2c_put_adapter(adapter);
+err_bus:
+	return data + payload_size + 7;
 }
 
 static const u8 *mipi_exec_spi(struct intel_dsi *intel_dsi, const u8 *data)
@@ -664,6 +757,8 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
 	intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
 	intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
 
+	intel_dsi->i2c_bus_num = -1;
+
 	/* a regular driver would get the device in probe */
 	for_each_dsi_port(port, intel_dsi->ports) {
 		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
-- 
2.21.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
  2020-01-03  0:52 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
  2020-01-03 11:05 ` [Intel-gfx] [PATCH] " Hans de Goede
@ 2020-01-04  1:22 ` Patchwork
  2020-01-04  1:47 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-04  1:22 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2)
URL   : https://patchwork.freedesktop.org/series/71581/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
27998f819a38 drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2)
-:14: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#14: 
In addition to the refactoring, the original patch is augmented by looking up

total: 0 errors, 1 warnings, 0 checks, 129 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
                   ` (2 preceding siblings ...)
  2020-01-04  1:22 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2) Patchwork
@ 2020-01-04  1:47 ` Patchwork
  2020-01-04 10:56 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-04  1:47 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2)
URL   : https://patchwork.freedesktop.org/series/71581/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7675 -> Patchwork_15993
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/index.html

Known issues
------------

  Here are the changes found in Patchwork_15993 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_close_race@basic-threads:
    - fi-byt-j1900:       [PASS][1] -> [TIMEOUT][2] ([i915#816])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-byt-j1900/igt@gem_close_race@basic-threads.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-byt-j1900/igt@gem_close_race@basic-threads.html

  * igt@i915_pm_rpm@module-reload:
    - fi-skl-6770hq:      [PASS][3] -> [FAIL][4] ([i915#178])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live_blt:
    - fi-ivb-3770:        [PASS][5] -> [DMESG-FAIL][6] ([i915#725])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-ivb-3770/igt@i915_selftest@live_blt.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-ivb-3770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gt_heartbeat:
    - fi-kbl-guc:         [PASS][7] -> [DMESG-FAIL][8] ([fdo#112406])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-kbl-guc/igt@i915_selftest@live_gt_heartbeat.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-kbl-guc/igt@i915_selftest@live_gt_heartbeat.html

  
#### Possible fixes ####

  * igt@gem_close_race@basic-threads:
    - fi-byt-n2820:       [TIMEOUT][9] ([i915#816]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-byt-n2820/igt@gem_close_race@basic-threads.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-byt-n2820/igt@gem_close_race@basic-threads.html

  * igt@i915_selftest@live_blt:
    - fi-hsw-4770r:       [DMESG-FAIL][11] ([i915#725]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-hsw-peppy:       [DMESG-FAIL][13] ([i915#722]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-hsw-peppy/igt@i915_selftest@live_gem_contexts.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [FAIL][15] ([i915#217]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Warnings ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-skl-6770hq:      [DMESG-WARN][17] ([i915#889]) -> [DMESG-WARN][18] ([i915#88])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_chamelium@vga-edid-read:
    - fi-icl-u2:          [SKIP][19] ([fdo#109309]) -> [FAIL][20] ([i915#217])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/fi-icl-u2/igt@kms_chamelium@vga-edid-read.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/fi-icl-u2/igt@kms_chamelium@vga-edid-read.html

  
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#112406]: https://bugs.freedesktop.org/show_bug.cgi?id=112406
  [i915#178]: https://gitlab.freedesktop.org/drm/intel/issues/178
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#722]: https://gitlab.freedesktop.org/drm/intel/issues/722
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816
  [i915#88]: https://gitlab.freedesktop.org/drm/intel/issues/88
  [i915#889]: https://gitlab.freedesktop.org/drm/intel/issues/889


Participating hosts (52 -> 43)
------------------------------

  Missing    (9): fi-ilk-m540 fi-hsw-4200u fi-glk-dsi fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-elk-e7500 fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7675 -> Patchwork_15993

  CI-20190529: 20190529
  CI_DRM_7675: 9a97e886930c21e976205c47180ab256a6dbc135 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5357: a555a4b98f90dab655d24bb3d07e9291a8b8dac8 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_15993: 27998f819a388a0db0ae85764219c018b0cacb1b @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

27998f819a38 drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2)

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
                   ` (3 preceding siblings ...)
  2020-01-04  1:47 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2020-01-04 10:56 ` Patchwork
  2020-01-10 21:20 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev3) Patchwork
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-04 10:56 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2)
URL   : https://patchwork.freedesktop.org/series/71581/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7675_full -> Patchwork_15993_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_15993_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_15993_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_15993_full:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
    - shard-tglb:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb7/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb6/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@gem_exec_schedule@pi-distinct-iova-render}:
    - shard-glk:          [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-glk4/igt@gem_exec_schedule@pi-distinct-iova-render.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-glk5/igt@gem_exec_schedule@pi-distinct-iova-render.html

  
New tests
---------

  New tests have been introduced between CI_DRM_7675_full and Patchwork_15993_full:

### New Piglit tests (11) ###

  * spec@arb_vertex_attrib_64bit@execution@vs_in@vs-input-double_dmat4x2-position-double_dmat4x2_array2:
    - Statuses : 1 fail(s)
    - Exec time: [0.16] s

  * spec@arb_vertex_attrib_64bit@execution@vs_in@vs-input-uint_uvec4_array3-double_dmat2x4_array2-position:
    - Statuses : 1 fail(s)
    - Exec time: [0.17] s

  * spec@glsl-4.20@execution@vs_in@vs-input-double_dvec3_array3-position-double_dmat2x4:
    - Statuses : 1 fail(s)
    - Exec time: [0.14] s

  * spec@glsl-4.20@execution@vs_in@vs-input-position-double_dvec2_array3-double_dvec2_array2:
    - Statuses : 1 fail(s)
    - Exec time: [0.14] s

  * spec@glsl-4.20@execution@vs_in@vs-input-position-ubyte_uint-short_ivec2-double_dvec4:
    - Statuses : 1 fail(s)
    - Exec time: [0.19] s

  * spec@glsl-4.20@execution@vs_in@vs-input-ubyte_uint-position-short_ivec3-double_dmat2x3:
    - Statuses : 1 fail(s)
    - Exec time: [0.12] s

  * spec@glsl-es-3.00@execution@built-in-functions@fs-packsnorm2x16:
    - Statuses : 1 fail(s)
    - Exec time: [6.69] s

  * spec@glsl-es-3.00@execution@built-in-functions@fs-unpackunorm2x16:
    - Statuses : 1 fail(s)
    - Exec time: [6.12] s

  * spec@glsl-es-3.00@execution@built-in-functions@vs-packhalf2x16:
    - Statuses : 1 fail(s)
    - Exec time: [9.88] s

  * spec@glsl-es-3.00@execution@built-in-functions@vs-packunorm2x16:
    - Statuses : 1 fail(s)
    - Exec time: [6.41] s

  * spec@glsl-es-3.00@execution@built-in-functions@vs-unpackunorm2x16:
    - Statuses : 1 fail(s)
    - Exec time: [6.24] s

  

Known issues
------------

  Here are the changes found in Patchwork_15993_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_busy@busy-vcs1:
    - shard-iclb:         [PASS][5] -> [SKIP][6] ([fdo#112080]) +8 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb1/igt@gem_busy@busy-vcs1.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb6/igt@gem_busy@busy-vcs1.html

  * igt@gem_busy@close-race:
    - shard-tglb:         [PASS][7] -> [INCOMPLETE][8] ([i915#435])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb5/igt@gem_busy@close-race.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb3/igt@gem_busy@close-race.html

  * igt@gem_ctx_isolation@vcs1-none:
    - shard-iclb:         [PASS][9] -> [SKIP][10] ([fdo#109276] / [fdo#112080]) +2 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb4/igt@gem_ctx_isolation@vcs1-none.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb6/igt@gem_ctx_isolation@vcs1-none.html

  * igt@gem_ctx_persistence@processes:
    - shard-tglb:         [PASS][11] -> [FAIL][12] ([i915#570])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb5/igt@gem_ctx_persistence@processes.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb9/igt@gem_ctx_persistence@processes.html

  * igt@gem_exec_gttfill@basic:
    - shard-tglb:         [PASS][13] -> [INCOMPLETE][14] ([fdo#111593])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb7/igt@gem_exec_gttfill@basic.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb7/igt@gem_exec_gttfill@basic.html

  * igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd:
    - shard-iclb:         [PASS][15] -> [SKIP][16] ([fdo#112146]) +4 similar issues
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb8/igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb4/igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd.html

  * igt@gem_exec_schedule@preempt-queue-contexts-chain-vebox:
    - shard-tglb:         [PASS][17] -> [INCOMPLETE][18] ([fdo#111606] / [fdo#111677])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb1/igt@gem_exec_schedule@preempt-queue-contexts-chain-vebox.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb8/igt@gem_exec_schedule@preempt-queue-contexts-chain-vebox.html

  * igt@gem_persistent_relocs@forked-thrash-inactive:
    - shard-tglb:         [PASS][19] -> [TIMEOUT][20] ([fdo#112126] / [i915#530])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb8/igt@gem_persistent_relocs@forked-thrash-inactive.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb3/igt@gem_persistent_relocs@forked-thrash-inactive.html

  * igt@gem_pipe_control_store_loop@reused-buffer:
    - shard-tglb:         [PASS][21] -> [INCOMPLETE][22] ([i915#707] / [i915#796])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb5/igt@gem_pipe_control_store_loop@reused-buffer.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb9/igt@gem_pipe_control_store_loop@reused-buffer.html

  * igt@gem_sync@basic-store-all:
    - shard-tglb:         [PASS][23] -> [INCOMPLETE][24] ([i915#472])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb1/igt@gem_sync@basic-store-all.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb5/igt@gem_sync@basic-store-all.html

  * igt@i915_selftest@live_gtt:
    - shard-skl:          [PASS][25] -> [TIMEOUT][26] ([fdo#111732])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl7/igt@i915_selftest@live_gtt.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl5/igt@i915_selftest@live_gtt.html

  * igt@kms_color@pipe-a-ctm-0-75:
    - shard-skl:          [PASS][27] -> [DMESG-WARN][28] ([i915#109])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl6/igt@kms_color@pipe-a-ctm-0-75.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl6/igt@kms_color@pipe-a-ctm-0-75.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [PASS][29] -> [FAIL][30] ([i915#72])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-glk8/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-glk8/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_frontbuffer_tracking@fbc-stridechange:
    - shard-tglb:         [PASS][31] -> [FAIL][32] ([i915#49]) +1 similar issue
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb9/igt@kms_frontbuffer_tracking@fbc-stridechange.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb7/igt@kms_frontbuffer_tracking@fbc-stridechange.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
    - shard-apl:          [PASS][33] -> [DMESG-WARN][34] ([i915#180]) +5 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-apl3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
    - shard-skl:          [PASS][35] -> [FAIL][36] ([fdo#108145] / [i915#265]) +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl10/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl1/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html

  * igt@kms_plane_multiple@atomic-pipe-a-tiling-yf:
    - shard-skl:          [PASS][37] -> [DMESG-WARN][38] ([IGT#6])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl4/igt@kms_plane_multiple@atomic-pipe-a-tiling-yf.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl1/igt@kms_plane_multiple@atomic-pipe-a-tiling-yf.html

  * igt@kms_setmode@basic:
    - shard-apl:          [PASS][39] -> [FAIL][40] ([i915#31])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-apl4/igt@kms_setmode@basic.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-apl2/igt@kms_setmode@basic.html

  * igt@kms_vblank@pipe-b-ts-continuation-suspend:
    - shard-kbl:          [PASS][41] -> [DMESG-WARN][42] ([i915#180]) +1 similar issue
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-kbl3/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-kbl7/igt@kms_vblank@pipe-b-ts-continuation-suspend.html

  * igt@perf_pmu@enable-race-vecs0:
    - shard-tglb:         [PASS][43] -> [INCOMPLETE][44] ([i915#470] / [i915#923])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb2/igt@perf_pmu@enable-race-vecs0.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb2/igt@perf_pmu@enable-race-vecs0.html

  * igt@prime_busy@hang-bsd2:
    - shard-iclb:         [PASS][45] -> [SKIP][46] ([fdo#109276]) +12 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb2/igt@prime_busy@hang-bsd2.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb7/igt@prime_busy@hang-bsd2.html

  
#### Possible fixes ####

  * igt@gem_ctx_isolation@rcs0-s3:
    - shard-kbl:          [DMESG-WARN][47] ([i915#180]) -> [PASS][48] +4 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-kbl7/igt@gem_ctx_isolation@rcs0-s3.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-kbl3/igt@gem_ctx_isolation@rcs0-s3.html

  * igt@gem_ctx_isolation@vcs1-reset:
    - shard-iclb:         [SKIP][49] ([fdo#109276] / [fdo#112080]) -> [PASS][50] +2 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb7/igt@gem_ctx_isolation@vcs1-reset.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb2/igt@gem_ctx_isolation@vcs1-reset.html

  * igt@gem_ctx_persistence@processes:
    - shard-glk:          [FAIL][51] ([i915#570]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-glk8/igt@gem_ctx_persistence@processes.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-glk6/igt@gem_ctx_persistence@processes.html

  * igt@gem_ctx_shared@q-smoketest-vebox:
    - shard-tglb:         [INCOMPLETE][53] ([fdo#111735]) -> [PASS][54] +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb3/igt@gem_ctx_shared@q-smoketest-vebox.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb5/igt@gem_ctx_shared@q-smoketest-vebox.html

  * igt@gem_exec_schedule@fifo-bsd1:
    - shard-iclb:         [SKIP][55] ([fdo#109276]) -> [PASS][56] +12 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb8/igt@gem_exec_schedule@fifo-bsd1.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb2/igt@gem_exec_schedule@fifo-bsd1.html

  * igt@gem_exec_schedule@preempt-bsd:
    - shard-iclb:         [SKIP][57] ([fdo#112146]) -> [PASS][58] +1 similar issue
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb1/igt@gem_exec_schedule@preempt-bsd.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb6/igt@gem_exec_schedule@preempt-bsd.html

  * igt@gem_exec_schedule@preempt-other-bsd1:
    - shard-tglb:         [INCOMPLETE][59] -> [PASS][60] +1 similar issue
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb6/igt@gem_exec_schedule@preempt-other-bsd1.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb7/igt@gem_exec_schedule@preempt-other-bsd1.html

  * igt@gem_exec_schedule@preempt-queue-bsd1:
    - shard-tglb:         [INCOMPLETE][61] ([fdo#111677]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb8/igt@gem_exec_schedule@preempt-queue-bsd1.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb6/igt@gem_exec_schedule@preempt-queue-bsd1.html

  * igt@gem_exec_schedule@preempt-queue-bsd2:
    - shard-tglb:         [INCOMPLETE][63] ([fdo#111606] / [fdo#111677]) -> [PASS][64] +1 similar issue
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb8/igt@gem_exec_schedule@preempt-queue-bsd2.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb7/igt@gem_exec_schedule@preempt-queue-bsd2.html

  * igt@gem_exec_suspend@basic-s0:
    - shard-tglb:         [INCOMPLETE][65] ([i915#472]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb9/igt@gem_exec_suspend@basic-s0.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb1/igt@gem_exec_suspend@basic-s0.html

  * igt@i915_selftest@live_gt_timelines:
    - shard-tglb:         [INCOMPLETE][67] ([i915#455]) -> [PASS][68]
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb6/igt@i915_selftest@live_gt_timelines.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb8/igt@i915_selftest@live_gt_timelines.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-skl:          [INCOMPLETE][69] ([i915#69]) -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl6/igt@i915_suspend@fence-restore-tiled2untiled.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl3/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_color@pipe-a-ctm-green-to-red:
    - shard-skl:          [FAIL][71] ([i915#129]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl4/igt@kms_color@pipe-a-ctm-green-to-red.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl1/igt@kms_color@pipe-a-ctm-green-to-red.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - shard-skl:          [FAIL][73] ([IGT#5]) -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl9/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl9/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_draw_crc@draw-method-rgb565-blt-ytiled:
    - shard-skl:          [FAIL][75] ([i915#52] / [i915#54]) -> [PASS][76] +1 similar issue
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl8/igt@kms_draw_crc@draw-method-rgb565-blt-ytiled.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl8/igt@kms_draw_crc@draw-method-rgb565-blt-ytiled.html

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-apl:          [FAIL][77] ([i915#79]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-apl1/igt@kms_flip@flip-vs-expired-vblank.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-apl3/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_flip@plain-flip-fb-recreate:
    - shard-skl:          [FAIL][79] ([i915#34]) -> [PASS][80]
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl2/igt@kms_flip@plain-flip-fb-recreate.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl2/igt@kms_flip@plain-flip-fb-recreate.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt:
    - shard-tglb:         [FAIL][81] ([i915#49]) -> [PASS][82] +2 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-apl:          [DMESG-WARN][83] ([i915#180]) -> [PASS][84] +1 similar issue
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-apl4/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-apl7/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-skl:          [FAIL][85] ([i915#49]) -> [PASS][86]
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl1/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_plane@plane-position-covered-pipe-a-planes:
    - shard-skl:          [FAIL][87] ([i915#247]) -> [PASS][88]
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl4/igt@kms_plane@plane-position-covered-pipe-a-planes.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl1/igt@kms_plane@plane-position-covered-pipe-a-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min:
    - shard-skl:          [FAIL][89] ([fdo#108145]) -> [PASS][90] +2 similar issues
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-skl7/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-skl3/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html

  * igt@kms_psr@psr2_primary_blt:
    - shard-iclb:         [SKIP][91] ([fdo#109441]) -> [PASS][92]
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb7/igt@kms_psr@psr2_primary_blt.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb2/igt@kms_psr@psr2_primary_blt.html

  * igt@perf_pmu@init-busy-vcs1:
    - shard-iclb:         [SKIP][93] ([fdo#112080]) -> [PASS][94] +8 similar issues
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb7/igt@perf_pmu@init-busy-vcs1.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb2/igt@perf_pmu@init-busy-vcs1.html

  
#### Warnings ####

  * igt@gem_ctx_isolation@vcs1-nonpriv:
    - shard-iclb:         [SKIP][95] ([fdo#109276] / [fdo#112080]) -> [FAIL][96] ([IGT#28])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-iclb6/igt@gem_ctx_isolation@vcs1-nonpriv.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-iclb4/igt@gem_ctx_isolation@vcs1-nonpriv.html

  * igt@gem_ctx_isolation@vcs2-nonpriv:
    - shard-tglb:         [SKIP][97] ([fdo#112080]) -> [SKIP][98] ([fdo#111912] / [fdo#112080]) +1 similar issue
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb9/igt@gem_ctx_isolation@vcs2-nonpriv.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb2/igt@gem_ctx_isolation@vcs2-nonpriv.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-tglb:         [FAIL][99] ([i915#454]) -> [SKIP][100] ([i915#468])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7675/shard-tglb7/igt@i915_pm_dc@dc6-dpms.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/shard-tglb2/igt@i915_pm_dc@dc6-dpms.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [IGT#28]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/28
  [IGT#5]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/5
  [IGT#6]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/6
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#111593]: https://bugs.freedesktop.org/show_bug.cgi?id=111593
  [fdo#111606]: https://bugs.freedesktop.org/show_bug.cgi?id=111606
  [fdo#111677]: https://bugs.freedesktop.org/show_bug.cgi?id=111677
  [fdo#111732]: https://bugs.freedesktop.org/show_bug.cgi?id=111732
  [fdo#111735]: https://bugs.freedesktop.org/show_bug.cgi?id=111735
  [fdo#111912]: https://bugs.freedesktop.org/show_bug.cgi?id=111912
  [fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
  [fdo#112126]: https://bugs.freedesktop.org/show_bug.cgi?id=112126
  [fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
  [i915#109]: https://gitlab.freedesktop.org/drm/intel/issues/109
  [i915#129]: https://gitlab.freedesktop.org/drm/intel/issues/129
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#247]: https://gitlab.freedesktop.org/drm/intel/issues/247
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
  [i915#34]: https://gitlab.freedesktop.org/drm/intel/issues/34
  [i915#435]: https://gitlab.freedesktop.org/drm/intel/issues/435
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#455]: https://gitlab.freedesktop.org/drm/intel/issues/455
  [i915#468]: https://gitlab.freedesktop.org/drm/intel/issues/468
  [i915#470]: https://gitlab.freedesktop.org/drm/intel/issues/470
  [i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472
  [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
  [i915#52]: https://gitlab.freedesktop.org/drm/intel/issues/52
  [i915#530]: https://gitlab.freedesktop.org/drm/intel/issues/530
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#570]: https://gitlab.freedesktop.org/drm/intel/issues/570
  [i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69
  [i915#707]: https://gitlab.freedesktop.org/drm/intel/issues/707
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#796]: https://gitlab.freedesktop.org/drm/intel/issues/796
  [i915#923]: https://gitlab.freedesktop.org/drm/intel/issues/923


Participating hosts (10 -> 11)
------------------------------

  Additional (1): pig-hsw-4770r 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7675 -> Patchwork_15993

  CI-20190529: 20190529
  CI_DRM_7675: 9a97e886930c21e976205c47180ab256a6dbc135 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5357: a555a4b98f90dab655d24bb3d07e9291a8b8dac8 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_15993: 27998f819a388a0db0ae85764219c018b0cacb1b @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15993/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
  2020-01-04  0:00   ` Vivek Kasireddy
@ 2020-01-04 16:44     ` Hans de Goede
  2020-01-07 16:49     ` Ville Syrjälä
  1 sibling, 0 replies; 22+ messages in thread
From: Hans de Goede @ 2020-01-04 16:44 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: Deepak M, intel-gfx

Hi,

On 04-01-2020 01:00, Vivek Kasireddy wrote:
> On Fri, 3 Jan 2020 12:05:11 +0100
> Hans de Goede <hdegoede@redhat.com> wrote:
> Hi Hans,
> 
>> Hi Vivek,
>>
>> On 03-01-2020 01:00, Vivek Kasireddy wrote:
>>> Parsing the i2c element is mainly done to transfer the payload from
>>> the MIPI sequence block to the relevant slave device. In some
>>> cases, the commands that are part of the payload can be used to
>>> turn on the backlight.
>>>
>>> This patch is actually a refactored version of this old patch:
>>> https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
>>>
>>> In addition to the refactoring, the old patch is augmented by
>>> looking up the i2c bus from ACPI NS instead of relying on the bus
>>> number provided in the VBT.
>>>
>>> Cc: Deepak M <m.deepak@intel.com>
>>> Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
>>> Cc: Matt Roper <matthew.d.roper@intel.com>
>>> Cc: Bob Paauwe <bob.j.paauwe@intel.com>
>>> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
>>
>> Thank you for this patch, I have been doing a lot of work to make
>> DSI panels on Bay Trail and Cherry Trail devices work better, as such
>> I've done a lot of testing of DSI panels. But I have never seen any
>> MIPI sequences actually use the i2c commands. May I ask how you have
>> tested this? Do you have a device which actually uses the i2c
>> commands?
> Oh, they sure exist; we do have a device that uses i2c commands to turn
> on the backlight that we have tested this patch on.

Ah, ok, good. I was a bit worried this patch was not tested with
any devices actually using the i2c stuff. So I'm happy to hear that it
has been tested.

Regards,

Hans



> 
>>
>> I also have some small review comments inline:
>>
>>> ---
>>>    drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
>>>    drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 93
>>> ++++++++++++++++++++ 2 files changed, 96 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h
>>> b/drivers/gpu/drm/i915/display/intel_dsi.h index
>>> b15be5814599..5651bc8aa5c2 100644 ---
>>> a/drivers/gpu/drm/i915/display/intel_dsi.h +++
>>> b/drivers/gpu/drm/i915/display/intel_dsi.h @@ -68,6 +68,9 @@ struct
>>> intel_dsi { /* number of DSI lanes */
>>>    	unsigned int lane_count;
>>>    
>>> +	/* i2c bus associated with the slave device */
>>> +	int i2c_bus_num;
>>> +
>>>    	/*
>>>    	 * video mode pixel format
>>>    	 *
>>> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
>>> b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c index
>>> f90946c912ee..60441a5a3dba 100644 ---
>>> a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c +++
>>> b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c @@ -83,6 +83,12 @@
>>> static struct gpio_map vlv_gpio_table[] = { {
>>> VLV_GPIO_NC_11_PANEL1_BKLTCTL }, };
>>>    
>>> +struct i2c_adapter_lookup {
>>> +	u16 slave_addr;
>>> +	struct intel_dsi *intel_dsi;
>>> +	acpi_handle dev_handle;
>>> +};
>>> +
>>>    #define CHV_GPIO_IDX_START_N		0
>>>    #define CHV_GPIO_IDX_START_E		73
>>>    #define CHV_GPIO_IDX_START_SW		100
>>> @@ -375,8 +381,93 @@ static const u8 *mipi_exec_gpio(struct
>>> intel_dsi *intel_dsi, const u8 *data) return data;
>>>    }
>>>    
>>> +static int i2c_adapter_lookup(struct acpi_resource *ares, void
>>> *data) +{
>>> +	struct i2c_adapter_lookup *lookup = data;
>>> +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
>>> +	struct acpi_resource_i2c_serialbus *sb;
>>> +	struct i2c_adapter *adapter;
>>> +	acpi_handle adapter_handle;
>>> +	acpi_status status;
>>> +
>>> +	if (intel_dsi->i2c_bus_num >= 0 ||
>>> +	    !i2c_acpi_get_i2c_resource(ares, &sb))
>>> +		return 1;
>>> +
>>> +	if (lookup->slave_addr != sb->slave_address)
>>> +		return 1;
>>> +
>>> +	status = acpi_get_handle(lookup->dev_handle,
>>> +				 sb->resource_source.string_ptr,
>>> +				 &adapter_handle);
>>> +	if (ACPI_FAILURE(status))
>>> +		return 1;
>>> +
>>> +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
>>> +	if (adapter)
>>> +		intel_dsi->i2c_bus_num = adapter->nr;
>>> +
>>> +	return 1;
>>> +}
>>> +
>>>    static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const
>>> u8 *data) {
>>> +	struct drm_device *dev = intel_dsi->base.base.dev;
>>> +	struct i2c_adapter *adapter;
>>> +	struct acpi_device *acpi_dev;
>>> +	struct list_head resource_list;
>>> +	struct i2c_adapter_lookup lookup;
>>> +	struct i2c_msg msg;
>>> +	int ret;
>>> +	u8 vbt_i2c_bus_num = *(data + 2);
>>> +	u16 slave_addr = *(u16 *)(data + 3);
>>> +	u8 reg_offset = *(data + 5);
>>> +	u8 payload_size = *(data + 6);
>>> +	u8 *payload_data;
>>> +
>>> +	if (intel_dsi->i2c_bus_num < 0) {
>>> +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
>>> +
>>> +		acpi_dev = ACPI_COMPANION(&dev->pdev->dev);
>>> +		if (acpi_dev) {
>>> +			memset(&lookup, 0, sizeof(lookup));
>>> +			lookup.slave_addr = slave_addr;
>>> +			lookup.intel_dsi = intel_dsi;
>>> +			lookup.dev_handle =
>>> acpi_device_handle(acpi_dev); +
>>> +			INIT_LIST_HEAD(&resource_list);
>>> +			acpi_dev_get_resources(acpi_dev,
>>> &resource_list,
>>> +					       i2c_adapter_lookup,
>>> +					       &lookup);
>>> +
>>> acpi_dev_free_resource_list(&resource_list);
>>> +		}
>>> +	}
>>> +
>>> +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
>>> +	if (!adapter)
>>> +		goto out;
>>
>> This should never happen, so you should put a DRM_DEV_WARN here.
> Ok, will do.
> 
>>
>>> +
>>> +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
>>> +	if (!payload_data)
>>> +		goto out;
>>> +
>>> +	payload_data[0] = reg_offset;
>>> +	memcpy(&payload_data[1], (data + 7), payload_size);
>>> +
>>> +	msg.addr = slave_addr;
>>> +	msg.flags = 0;
>>> +	msg.len = payload_size + 1;
>>> +	msg.buf = payload_data;
>>> +
>>> +	ret = i2c_transfer(adapter, &msg, 1);
>>> +	if (ret < 0)
>>> +		DRM_ERROR("i2c transfer failed");
>>
>> DRM_DEV_ERROR? And maybe some more info, like the register which
>> the transfer is going to + payload size?
> Ok, adding extra info makes sense.
> 
>>
>>> +
>>> +	kfree(payload_data);
>>> +	i2c_put_adapter(adapter);
>>> +
>>
>> Just put out here, no need for the DRM_DEBUG (which should no
>> longer be a debug now that we implement this) below, since we
>> WARN or ERROR on all goto out; statements above.
> Ok, will do.
> 
> Thanks,
> Vivek
> 
>>
>> out:
>>
>>> +	return data + payload_size + 7;
>>
>> And drop these 3 lines:
>>
>>> +out:
>>>    	DRM_DEBUG_KMS("Skipping I2C element execution\n");
>>>    
>>>    	return data + *(data + 6) + 7;
>>
>>
>>
>>> @@ -664,6 +755,8 @@ bool intel_dsi_vbt_init(struct intel_dsi
>>> *intel_dsi, u16 panel_id) intel_dsi->panel_off_delay =
>>> pps->panel_off_delay / 10; intel_dsi->panel_pwr_cycle_delay =
>>> pps->panel_power_cycle_delay / 10;
>>> +	intel_dsi->i2c_bus_num = -1;
>>> +
>>>    	/* a regular driver would get the device in probe */
>>>    	for_each_dsi_port(port, intel_dsi->ports) {
>>>    		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
>>>    
>>
>> Regards,
>>
>> Hans
>>
> 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2)
  2020-01-04  1:09   ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2) Vivek Kasireddy
@ 2020-01-04 16:45     ` Hans de Goede
  2020-01-10 18:11       ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3) Vivek Kasireddy
  0 siblings, 1 reply; 22+ messages in thread
From: Hans de Goede @ 2020-01-04 16:45 UTC (permalink / raw)
  To: Vivek Kasireddy, intel-gfx

Hi,

On 04-01-2020 02:09, Vivek Kasireddy wrote:
> Parsing the i2c element is mainly done to transfer the payload from the
> MIPI sequence block to the relevant slave device. In some cases, the
> commands that are part of the payload can be used to turn on the backlight.
> 
> This patch is actually a refactored version of this old patch:
> https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
> 
> In addition to the refactoring, the original patch is augmented by looking up
> the i2c bus from ACPI NS instead of relying on the bus number provided
> in the VBT.
> 
> v2:
> - Add DRM_DEV_ERROR for invalid adapter and failed transfer and also
>    drop the DRM_DEBUG that existed originally. (Hans)
> - Add two gotos instead of one to clean things up properly.
> 
> CC: Hans de Goede <hdegoede@redhat.com>
> Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>

v2 looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans



> ---
>   drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
>   drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 99 +++++++++++++++++++-
>   2 files changed, 100 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
> index b15be5814599..5651bc8aa5c2 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi.h
> +++ b/drivers/gpu/drm/i915/display/intel_dsi.h
> @@ -68,6 +68,9 @@ struct intel_dsi {
>   	/* number of DSI lanes */
>   	unsigned int lane_count;
>   
> +	/* i2c bus associated with the slave device */
> +	int i2c_bus_num;
> +
>   	/*
>   	 * video mode pixel format
>   	 *
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> index f90946c912ee..35fcef7c0d70 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> @@ -83,6 +83,12 @@ static struct gpio_map vlv_gpio_table[] = {
>   	{ VLV_GPIO_NC_11_PANEL1_BKLTCTL },
>   };
>   
> +struct i2c_adapter_lookup {
> +	u16 slave_addr;
> +	struct intel_dsi *intel_dsi;
> +	acpi_handle dev_handle;
> +};
> +
>   #define CHV_GPIO_IDX_START_N		0
>   #define CHV_GPIO_IDX_START_E		73
>   #define CHV_GPIO_IDX_START_SW		100
> @@ -375,11 +381,98 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>   	return data;
>   }
>   
> +static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
> +{
> +	struct i2c_adapter_lookup *lookup = data;
> +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
> +	struct acpi_resource_i2c_serialbus *sb;
> +	struct i2c_adapter *adapter;
> +	acpi_handle adapter_handle;
> +	acpi_status status;
> +
> +	if (intel_dsi->i2c_bus_num >= 0 ||
> +	    !i2c_acpi_get_i2c_resource(ares, &sb))
> +		return 1;
> +
> +	if (lookup->slave_addr != sb->slave_address)
> +		return 1;
> +
> +	status = acpi_get_handle(lookup->dev_handle,
> +				 sb->resource_source.string_ptr,
> +				 &adapter_handle);
> +	if (ACPI_FAILURE(status))
> +		return 1;
> +
> +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
> +	if (adapter)
> +		intel_dsi->i2c_bus_num = adapter->nr;
> +
> +	return 1;
> +}
> +
>   static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
>   {
> -	DRM_DEBUG_KMS("Skipping I2C element execution\n");
> +	struct drm_device *drm_dev = intel_dsi->base.base.dev;
> +	struct device *dev = &drm_dev->pdev->dev;
> +	struct i2c_adapter *adapter;
> +	struct acpi_device *acpi_dev;
> +	struct list_head resource_list;
> +	struct i2c_adapter_lookup lookup;
> +	struct i2c_msg msg;
> +	int ret;
> +	u8 vbt_i2c_bus_num = *(data + 2);
> +	u16 slave_addr = *(u16 *)(data + 3);
> +	u8 reg_offset = *(data + 5);
> +	u8 payload_size = *(data + 6);
> +	u8 *payload_data;
> +
> +	if (intel_dsi->i2c_bus_num < 0) {
> +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> +
> +		acpi_dev = ACPI_COMPANION(dev);
> +		if (acpi_dev) {
> +			memset(&lookup, 0, sizeof(lookup));
> +			lookup.slave_addr = slave_addr;
> +			lookup.intel_dsi = intel_dsi;
> +			lookup.dev_handle = acpi_device_handle(acpi_dev);
> +
> +			INIT_LIST_HEAD(&resource_list);
> +			acpi_dev_get_resources(acpi_dev, &resource_list,
> +					       i2c_adapter_lookup,
> +					       &lookup);
> +			acpi_dev_free_resource_list(&resource_list);
> +		}
> +	}
>   
> -	return data + *(data + 6) + 7;
> +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
> +	if (!adapter) {
> +		DRM_DEV_ERROR(dev, "Cannot find a valid i2c bus for xfer\n");
> +		goto err_bus;
> +	}
> +
> +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
> +	if (!payload_data)
> +		goto err_alloc;
> +
> +	payload_data[0] = reg_offset;
> +	memcpy(&payload_data[1], (data + 7), payload_size);
> +
> +	msg.addr = slave_addr;
> +	msg.flags = 0;
> +	msg.len = payload_size + 1;
> +	msg.buf = payload_data;
> +
> +	ret = i2c_transfer(adapter, &msg, 1);
> +	if (ret < 0)
> +		DRM_DEV_ERROR(dev,
> +			      "Failed to xfer payload of size (%u) to reg (%u)\n",
> +			      payload_size, reg_offset);
> +
> +	kfree(payload_data);
> +err_alloc:
> +	i2c_put_adapter(adapter);
> +err_bus:
> +	return data + payload_size + 7;
>   }
>   
>   static const u8 *mipi_exec_spi(struct intel_dsi *intel_dsi, const u8 *data)
> @@ -664,6 +757,8 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
>   	intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
>   	intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
>   
> +	intel_dsi->i2c_bus_num = -1;
> +
>   	/* a regular driver would get the device in probe */
>   	for_each_dsi_port(port, intel_dsi->ports) {
>   		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
> 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
  2020-01-04  0:00   ` Vivek Kasireddy
  2020-01-04 16:44     ` Hans de Goede
@ 2020-01-07 16:49     ` Ville Syrjälä
  2020-01-07 19:36       ` Matt Roper
  1 sibling, 1 reply; 22+ messages in thread
From: Ville Syrjälä @ 2020-01-07 16:49 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: Deepak M, intel-gfx

On Fri, Jan 03, 2020 at 04:00:54PM -0800, Vivek Kasireddy wrote:
> On Fri, 3 Jan 2020 12:05:11 +0100
> Hans de Goede <hdegoede@redhat.com> wrote:
> Hi Hans,
> 
> > Hi Vivek,
> > 
> > On 03-01-2020 01:00, Vivek Kasireddy wrote:
> > > Parsing the i2c element is mainly done to transfer the payload from
> > > the MIPI sequence block to the relevant slave device. In some
> > > cases, the commands that are part of the payload can be used to
> > > turn on the backlight.
> > > 
> > > This patch is actually a refactored version of this old patch:
> > > https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
> > > 
> > > In addition to the refactoring, the old patch is augmented by
> > > looking up the i2c bus from ACPI NS instead of relying on the bus
> > > number provided in the VBT.
> > > 
> > > Cc: Deepak M <m.deepak@intel.com>
> > > Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> > > Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>  
> > 
> > Thank you for this patch, I have been doing a lot of work to make
> > DSI panels on Bay Trail and Cherry Trail devices work better, as such
> > I've done a lot of testing of DSI panels. But I have never seen any
> > MIPI sequences actually use the i2c commands. May I ask how you have
> > tested this? Do you have a device which actually uses the i2c
> > commands?
> Oh, they sure exist; we do have a device that uses i2c commands to turn
> on the backlight that we have tested this patch on. 

And what exactly is that device? That is valuable information that the
commit message should contain.

> 
> > 
> > I also have some small review comments inline:
> > 
> > > ---
> > >   drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
> > >   drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 93
> > > ++++++++++++++++++++ 2 files changed, 96 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h
> > > b/drivers/gpu/drm/i915/display/intel_dsi.h index
> > > b15be5814599..5651bc8aa5c2 100644 ---
> > > a/drivers/gpu/drm/i915/display/intel_dsi.h +++
> > > b/drivers/gpu/drm/i915/display/intel_dsi.h @@ -68,6 +68,9 @@ struct
> > > intel_dsi { /* number of DSI lanes */
> > >   	unsigned int lane_count;
> > >   
> > > +	/* i2c bus associated with the slave device */
> > > +	int i2c_bus_num;
> > > +
> > >   	/*
> > >   	 * video mode pixel format
> > >   	 *
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> > > b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c index
> > > f90946c912ee..60441a5a3dba 100644 ---
> > > a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c +++
> > > b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c @@ -83,6 +83,12 @@
> > > static struct gpio_map vlv_gpio_table[] = { {
> > > VLV_GPIO_NC_11_PANEL1_BKLTCTL }, };
> > >   
> > > +struct i2c_adapter_lookup {
> > > +	u16 slave_addr;
> > > +	struct intel_dsi *intel_dsi;
> > > +	acpi_handle dev_handle;
> > > +};
> > > +
> > >   #define CHV_GPIO_IDX_START_N		0
> > >   #define CHV_GPIO_IDX_START_E		73
> > >   #define CHV_GPIO_IDX_START_SW		100
> > > @@ -375,8 +381,93 @@ static const u8 *mipi_exec_gpio(struct
> > > intel_dsi *intel_dsi, const u8 *data) return data;
> > >   }
> > >   
> > > +static int i2c_adapter_lookup(struct acpi_resource *ares, void
> > > *data) +{
> > > +	struct i2c_adapter_lookup *lookup = data;
> > > +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
> > > +	struct acpi_resource_i2c_serialbus *sb;
> > > +	struct i2c_adapter *adapter;
> > > +	acpi_handle adapter_handle;
> > > +	acpi_status status;
> > > +
> > > +	if (intel_dsi->i2c_bus_num >= 0 ||
> > > +	    !i2c_acpi_get_i2c_resource(ares, &sb))
> > > +		return 1;
> > > +
> > > +	if (lookup->slave_addr != sb->slave_address)
> > > +		return 1;
> > > +
> > > +	status = acpi_get_handle(lookup->dev_handle,
> > > +				 sb->resource_source.string_ptr,
> > > +				 &adapter_handle);
> > > +	if (ACPI_FAILURE(status))
> > > +		return 1;
> > > +
> > > +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
> > > +	if (adapter)
> > > +		intel_dsi->i2c_bus_num = adapter->nr;
> > > +
> > > +	return 1;
> > > +}
> > > +
> > >   static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const
> > > u8 *data) {
> > > +	struct drm_device *dev = intel_dsi->base.base.dev;
> > > +	struct i2c_adapter *adapter;
> > > +	struct acpi_device *acpi_dev;
> > > +	struct list_head resource_list;
> > > +	struct i2c_adapter_lookup lookup;
> > > +	struct i2c_msg msg;
> > > +	int ret;
> > > +	u8 vbt_i2c_bus_num = *(data + 2);
> > > +	u16 slave_addr = *(u16 *)(data + 3);
> > > +	u8 reg_offset = *(data + 5);
> > > +	u8 payload_size = *(data + 6);
> > > +	u8 *payload_data;
> > > +
> > > +	if (intel_dsi->i2c_bus_num < 0) {
> > > +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> > > +
> > > +		acpi_dev = ACPI_COMPANION(&dev->pdev->dev);
> > > +		if (acpi_dev) {
> > > +			memset(&lookup, 0, sizeof(lookup));
> > > +			lookup.slave_addr = slave_addr;
> > > +			lookup.intel_dsi = intel_dsi;
> > > +			lookup.dev_handle =
> > > acpi_device_handle(acpi_dev); +
> > > +			INIT_LIST_HEAD(&resource_list);
> > > +			acpi_dev_get_resources(acpi_dev,
> > > &resource_list,
> > > +					       i2c_adapter_lookup,
> > > +					       &lookup);
> > > +
> > > acpi_dev_free_resource_list(&resource_list);
> > > +		}
> > > +	}
> > > +
> > > +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
> > > +	if (!adapter)
> > > +		goto out;  
> > 
> > This should never happen, so you should put a DRM_DEV_WARN here.
> Ok, will do.
> 
> > 
> > > +
> > > +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
> > > +	if (!payload_data)
> > > +		goto out;
> > > +
> > > +	payload_data[0] = reg_offset;
> > > +	memcpy(&payload_data[1], (data + 7), payload_size);
> > > +
> > > +	msg.addr = slave_addr;
> > > +	msg.flags = 0;
> > > +	msg.len = payload_size + 1;
> > > +	msg.buf = payload_data;
> > > +
> > > +	ret = i2c_transfer(adapter, &msg, 1);
> > > +	if (ret < 0)
> > > +		DRM_ERROR("i2c transfer failed");  
> > 
> > DRM_DEV_ERROR? And maybe some more info, like the register which
> > the transfer is going to + payload size?
> Ok, adding extra info makes sense.
> 
> > 
> > > +
> > > +	kfree(payload_data);
> > > +	i2c_put_adapter(adapter);
> > > +  
> > 
> > Just put out here, no need for the DRM_DEBUG (which should no
> > longer be a debug now that we implement this) below, since we
> > WARN or ERROR on all goto out; statements above.
> Ok, will do.
> 
> Thanks,
> Vivek
> 
> > 
> > out:
> > 
> > > +	return data + payload_size + 7;  
> > 
> > And drop these 3 lines:
> > 
> > > +out:
> > >   	DRM_DEBUG_KMS("Skipping I2C element execution\n");
> > >   
> > >   	return data + *(data + 6) + 7;  
> > 
> > 
> > 
> > > @@ -664,6 +755,8 @@ bool intel_dsi_vbt_init(struct intel_dsi
> > > *intel_dsi, u16 panel_id) intel_dsi->panel_off_delay =
> > > pps->panel_off_delay / 10; intel_dsi->panel_pwr_cycle_delay =
> > > pps->panel_power_cycle_delay / 10; 
> > > +	intel_dsi->i2c_bus_num = -1;
> > > +
> > >   	/* a regular driver would get the device in probe */
> > >   	for_each_dsi_port(port, intel_dsi->ports) {
> > >   		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
> > >   
> > 
> > Regards,
> > 
> > Hans
> > 
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block
  2020-01-07 16:49     ` Ville Syrjälä
@ 2020-01-07 19:36       ` Matt Roper
  0 siblings, 0 replies; 22+ messages in thread
From: Matt Roper @ 2020-01-07 19:36 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: Deepak M, intel-gfx

On Tue, Jan 07, 2020 at 06:49:04PM +0200, Ville Syrjälä wrote:
> On Fri, Jan 03, 2020 at 04:00:54PM -0800, Vivek Kasireddy wrote:
> > On Fri, 3 Jan 2020 12:05:11 +0100
> > Hans de Goede <hdegoede@redhat.com> wrote:
> > Hi Hans,
> > 
> > > Hi Vivek,
> > > 
> > > On 03-01-2020 01:00, Vivek Kasireddy wrote:
> > > > Parsing the i2c element is mainly done to transfer the payload from
> > > > the MIPI sequence block to the relevant slave device. In some
> > > > cases, the commands that are part of the payload can be used to
> > > > turn on the backlight.
> > > > 
> > > > This patch is actually a refactored version of this old patch:
> > > > https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
> > > > 
> > > > In addition to the refactoring, the old patch is augmented by
> > > > looking up the i2c bus from ACPI NS instead of relying on the bus
> > > > number provided in the VBT.
> > > > 
> > > > Cc: Deepak M <m.deepak@intel.com>
> > > > Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > > Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> > > > Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>  
> > > 
> > > Thank you for this patch, I have been doing a lot of work to make
> > > DSI panels on Bay Trail and Cherry Trail devices work better, as such
> > > I've done a lot of testing of DSI panels. But I have never seen any
> > > MIPI sequences actually use the i2c commands. May I ask how you have
> > > tested this? Do you have a device which actually uses the i2c
> > > commands?
> > Oh, they sure exist; we do have a device that uses i2c commands to turn
> > on the backlight that we have tested this patch on. 
> 
> And what exactly is that device? That is valuable information that the
> commit message should contain.

I'm not sure if we're allowed to disclose that information.  I believe
Vivek is working with an engineering sample and the device itself might
not have been publicly announced by the device manufacturer yet.


Matt

> 
> > 
> > > 
> > > I also have some small review comments inline:
> > > 
> > > > ---
> > > >   drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
> > > >   drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 93
> > > > ++++++++++++++++++++ 2 files changed, 96 insertions(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h
> > > > b/drivers/gpu/drm/i915/display/intel_dsi.h index
> > > > b15be5814599..5651bc8aa5c2 100644 ---
> > > > a/drivers/gpu/drm/i915/display/intel_dsi.h +++
> > > > b/drivers/gpu/drm/i915/display/intel_dsi.h @@ -68,6 +68,9 @@ struct
> > > > intel_dsi { /* number of DSI lanes */
> > > >   	unsigned int lane_count;
> > > >   
> > > > +	/* i2c bus associated with the slave device */
> > > > +	int i2c_bus_num;
> > > > +
> > > >   	/*
> > > >   	 * video mode pixel format
> > > >   	 *
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> > > > b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c index
> > > > f90946c912ee..60441a5a3dba 100644 ---
> > > > a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c +++
> > > > b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c @@ -83,6 +83,12 @@
> > > > static struct gpio_map vlv_gpio_table[] = { {
> > > > VLV_GPIO_NC_11_PANEL1_BKLTCTL }, };
> > > >   
> > > > +struct i2c_adapter_lookup {
> > > > +	u16 slave_addr;
> > > > +	struct intel_dsi *intel_dsi;
> > > > +	acpi_handle dev_handle;
> > > > +};
> > > > +
> > > >   #define CHV_GPIO_IDX_START_N		0
> > > >   #define CHV_GPIO_IDX_START_E		73
> > > >   #define CHV_GPIO_IDX_START_SW		100
> > > > @@ -375,8 +381,93 @@ static const u8 *mipi_exec_gpio(struct
> > > > intel_dsi *intel_dsi, const u8 *data) return data;
> > > >   }
> > > >   
> > > > +static int i2c_adapter_lookup(struct acpi_resource *ares, void
> > > > *data) +{
> > > > +	struct i2c_adapter_lookup *lookup = data;
> > > > +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
> > > > +	struct acpi_resource_i2c_serialbus *sb;
> > > > +	struct i2c_adapter *adapter;
> > > > +	acpi_handle adapter_handle;
> > > > +	acpi_status status;
> > > > +
> > > > +	if (intel_dsi->i2c_bus_num >= 0 ||
> > > > +	    !i2c_acpi_get_i2c_resource(ares, &sb))
> > > > +		return 1;
> > > > +
> > > > +	if (lookup->slave_addr != sb->slave_address)
> > > > +		return 1;
> > > > +
> > > > +	status = acpi_get_handle(lookup->dev_handle,
> > > > +				 sb->resource_source.string_ptr,
> > > > +				 &adapter_handle);
> > > > +	if (ACPI_FAILURE(status))
> > > > +		return 1;
> > > > +
> > > > +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
> > > > +	if (adapter)
> > > > +		intel_dsi->i2c_bus_num = adapter->nr;
> > > > +
> > > > +	return 1;
> > > > +}
> > > > +
> > > >   static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const
> > > > u8 *data) {
> > > > +	struct drm_device *dev = intel_dsi->base.base.dev;
> > > > +	struct i2c_adapter *adapter;
> > > > +	struct acpi_device *acpi_dev;
> > > > +	struct list_head resource_list;
> > > > +	struct i2c_adapter_lookup lookup;
> > > > +	struct i2c_msg msg;
> > > > +	int ret;
> > > > +	u8 vbt_i2c_bus_num = *(data + 2);
> > > > +	u16 slave_addr = *(u16 *)(data + 3);
> > > > +	u8 reg_offset = *(data + 5);
> > > > +	u8 payload_size = *(data + 6);
> > > > +	u8 *payload_data;
> > > > +
> > > > +	if (intel_dsi->i2c_bus_num < 0) {
> > > > +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> > > > +
> > > > +		acpi_dev = ACPI_COMPANION(&dev->pdev->dev);
> > > > +		if (acpi_dev) {
> > > > +			memset(&lookup, 0, sizeof(lookup));
> > > > +			lookup.slave_addr = slave_addr;
> > > > +			lookup.intel_dsi = intel_dsi;
> > > > +			lookup.dev_handle =
> > > > acpi_device_handle(acpi_dev); +
> > > > +			INIT_LIST_HEAD(&resource_list);
> > > > +			acpi_dev_get_resources(acpi_dev,
> > > > &resource_list,
> > > > +					       i2c_adapter_lookup,
> > > > +					       &lookup);
> > > > +
> > > > acpi_dev_free_resource_list(&resource_list);
> > > > +		}
> > > > +	}
> > > > +
> > > > +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
> > > > +	if (!adapter)
> > > > +		goto out;  
> > > 
> > > This should never happen, so you should put a DRM_DEV_WARN here.
> > Ok, will do.
> > 
> > > 
> > > > +
> > > > +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
> > > > +	if (!payload_data)
> > > > +		goto out;
> > > > +
> > > > +	payload_data[0] = reg_offset;
> > > > +	memcpy(&payload_data[1], (data + 7), payload_size);
> > > > +
> > > > +	msg.addr = slave_addr;
> > > > +	msg.flags = 0;
> > > > +	msg.len = payload_size + 1;
> > > > +	msg.buf = payload_data;
> > > > +
> > > > +	ret = i2c_transfer(adapter, &msg, 1);
> > > > +	if (ret < 0)
> > > > +		DRM_ERROR("i2c transfer failed");  
> > > 
> > > DRM_DEV_ERROR? And maybe some more info, like the register which
> > > the transfer is going to + payload size?
> > Ok, adding extra info makes sense.
> > 
> > > 
> > > > +
> > > > +	kfree(payload_data);
> > > > +	i2c_put_adapter(adapter);
> > > > +  
> > > 
> > > Just put out here, no need for the DRM_DEBUG (which should no
> > > longer be a debug now that we implement this) below, since we
> > > WARN or ERROR on all goto out; statements above.
> > Ok, will do.
> > 
> > Thanks,
> > Vivek
> > 
> > > 
> > > out:
> > > 
> > > > +	return data + payload_size + 7;  
> > > 
> > > And drop these 3 lines:
> > > 
> > > > +out:
> > > >   	DRM_DEBUG_KMS("Skipping I2C element execution\n");
> > > >   
> > > >   	return data + *(data + 6) + 7;  
> > > 
> > > 
> > > 
> > > > @@ -664,6 +755,8 @@ bool intel_dsi_vbt_init(struct intel_dsi
> > > > *intel_dsi, u16 panel_id) intel_dsi->panel_off_delay =
> > > > pps->panel_off_delay / 10; intel_dsi->panel_pwr_cycle_delay =
> > > > pps->panel_power_cycle_delay / 10; 
> > > > +	intel_dsi->i2c_bus_num = -1;
> > > > +
> > > >   	/* a regular driver would get the device in probe */
> > > >   	for_each_dsi_port(port, intel_dsi->ports) {
> > > >   		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
> > > >   
> > > 
> > > Regards,
> > > 
> > > Hans
> > > 
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Ville Syrjälä
> Intel
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Matt Roper
Graphics Software Engineer
VTT-OSGC Platform Enablement
Intel Corporation
(916) 356-2795
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3)
  2020-01-04 16:45     ` Hans de Goede
@ 2020-01-10 18:11       ` Vivek Kasireddy
  2020-01-10 18:39         ` Matt Roper
  2020-01-13 11:27         ` Jani Nikula
  0 siblings, 2 replies; 22+ messages in thread
From: Vivek Kasireddy @ 2020-01-10 18:11 UTC (permalink / raw)
  To: intel-gfx

Parsing the i2c element is mainly done to transfer the payload from the
MIPI sequence block to the relevant slave device. In some cases, the
commands that are part of the payload can be used to turn on the backlight.

This patch is actually a refactored version of this old patch:
https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html

In addition to the refactoring, the original patch is augmented by looking up
the i2c bus from ACPI NS instead of relying on the bus number provided
in the VBT.

This patch was tested on Aava Mobile's Inari 10 tablet. It enabled
turning on the backlight by transfering the payload to the device.

v2:
- Add DRM_DEV_ERROR for invalid adapter and failed transfer and also
  drop the DRM_DEBUG that existed originally. (Hans)
- Add two gotos instead of one to clean things up properly.

v3:
- Identify the device on which this patch was tested in the commit
  message (Ville)

Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Bob Paauwe <bob.j.paauwe@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 99 +++++++++++++++++++-
 2 files changed, 100 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
index 7481a5aa3084..6cef1356b4e6 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.h
+++ b/drivers/gpu/drm/i915/display/intel_dsi.h
@@ -69,6 +69,9 @@ struct intel_dsi {
 	/* number of DSI lanes */
 	unsigned int lane_count;
 
+	/* i2c bus associated with the slave device */
+	int i2c_bus_num;
+
 	/*
 	 * video mode pixel format
 	 *
diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
index 0032161e0f76..89fb0d90b694 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -86,6 +86,12 @@ static struct gpio_map vlv_gpio_table[] = {
 	{ VLV_GPIO_NC_11_PANEL1_BKLTCTL },
 };
 
+struct i2c_adapter_lookup {
+	u16 slave_addr;
+	struct intel_dsi *intel_dsi;
+	acpi_handle dev_handle;
+};
+
 #define CHV_GPIO_IDX_START_N		0
 #define CHV_GPIO_IDX_START_E		73
 #define CHV_GPIO_IDX_START_SW		100
@@ -378,11 +384,98 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
 	return data;
 }
 
+static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
+{
+	struct i2c_adapter_lookup *lookup = data;
+	struct intel_dsi *intel_dsi = lookup->intel_dsi;
+	struct acpi_resource_i2c_serialbus *sb;
+	struct i2c_adapter *adapter;
+	acpi_handle adapter_handle;
+	acpi_status status;
+
+	if (intel_dsi->i2c_bus_num >= 0 ||
+	    !i2c_acpi_get_i2c_resource(ares, &sb))
+		return 1;
+
+	if (lookup->slave_addr != sb->slave_address)
+		return 1;
+
+	status = acpi_get_handle(lookup->dev_handle,
+				 sb->resource_source.string_ptr,
+				 &adapter_handle);
+	if (ACPI_FAILURE(status))
+		return 1;
+
+	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
+	if (adapter)
+		intel_dsi->i2c_bus_num = adapter->nr;
+
+	return 1;
+}
+
 static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
 {
-	DRM_DEBUG_KMS("Skipping I2C element execution\n");
+	struct drm_device *drm_dev = intel_dsi->base.base.dev;
+	struct device *dev = &drm_dev->pdev->dev;
+	struct i2c_adapter *adapter;
+	struct acpi_device *acpi_dev;
+	struct list_head resource_list;
+	struct i2c_adapter_lookup lookup;
+	struct i2c_msg msg;
+	int ret;
+	u8 vbt_i2c_bus_num = *(data + 2);
+	u16 slave_addr = *(u16 *)(data + 3);
+	u8 reg_offset = *(data + 5);
+	u8 payload_size = *(data + 6);
+	u8 *payload_data;
+
+	if (intel_dsi->i2c_bus_num < 0) {
+		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
+
+		acpi_dev = ACPI_COMPANION(dev);
+		if (acpi_dev) {
+			memset(&lookup, 0, sizeof(lookup));
+			lookup.slave_addr = slave_addr;
+			lookup.intel_dsi = intel_dsi;
+			lookup.dev_handle = acpi_device_handle(acpi_dev);
+
+			INIT_LIST_HEAD(&resource_list);
+			acpi_dev_get_resources(acpi_dev, &resource_list,
+					       i2c_adapter_lookup,
+					       &lookup);
+			acpi_dev_free_resource_list(&resource_list);
+		}
+	}
 
-	return data + *(data + 6) + 7;
+	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
+	if (!adapter) {
+		DRM_DEV_ERROR(dev, "Cannot find a valid i2c bus for xfer\n");
+		goto err_bus;
+	}
+
+	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
+	if (!payload_data)
+		goto err_alloc;
+
+	payload_data[0] = reg_offset;
+	memcpy(&payload_data[1], (data + 7), payload_size);
+
+	msg.addr = slave_addr;
+	msg.flags = 0;
+	msg.len = payload_size + 1;
+	msg.buf = payload_data;
+
+	ret = i2c_transfer(adapter, &msg, 1);
+	if (ret < 0)
+		DRM_DEV_ERROR(dev,
+			      "Failed to xfer payload of size (%u) to reg (%u)\n",
+			      payload_size, reg_offset);
+
+	kfree(payload_data);
+err_alloc:
+	i2c_put_adapter(adapter);
+err_bus:
+	return data + payload_size + 7;
 }
 
 static const u8 *mipi_exec_spi(struct intel_dsi *intel_dsi, const u8 *data)
@@ -683,6 +776,8 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
 	intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
 	intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
 
+	intel_dsi->i2c_bus_num = -1;
+
 	/* a regular driver would get the device in probe */
 	for_each_dsi_port(port, intel_dsi->ports) {
 		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
-- 
2.21.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3)
  2020-01-10 18:11       ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3) Vivek Kasireddy
@ 2020-01-10 18:39         ` Matt Roper
  2020-01-13 11:27         ` Jani Nikula
  1 sibling, 0 replies; 22+ messages in thread
From: Matt Roper @ 2020-01-10 18:39 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

On Fri, Jan 10, 2020 at 10:11:23AM -0800, Vivek Kasireddy wrote:
> Parsing the i2c element is mainly done to transfer the payload from the
> MIPI sequence block to the relevant slave device. In some cases, the
> commands that are part of the payload can be used to turn on the backlight.
> 
> This patch is actually a refactored version of this old patch:
> https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
> 
> In addition to the refactoring, the original patch is augmented by looking up
> the i2c bus from ACPI NS instead of relying on the bus number provided
> in the VBT.
> 
> This patch was tested on Aava Mobile's Inari 10 tablet. It enabled
> turning on the backlight by transfering the payload to the device.
> 
> v2:
> - Add DRM_DEV_ERROR for invalid adapter and failed transfer and also
>   drop the DRM_DEBUG that existed originally. (Hans)
> - Add two gotos instead of one to clean things up properly.
> 
> v3:
> - Identify the device on which this patch was tested in the commit
>   message (Ville)
> 
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>

Since v3 is identical to v2 except for the commit message, I think we
can apply this based on v2's CI results.  The only CI failure was an
incomplete on a non-DSI TGL system and the incomplete happened long
after the VBT parsing changes here would have had any effect.

Applied to dinq.  Thanks for the patch and review.


Matt

> ---
>  drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
>  drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 99 +++++++++++++++++++-
>  2 files changed, 100 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
> index 7481a5aa3084..6cef1356b4e6 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi.h
> +++ b/drivers/gpu/drm/i915/display/intel_dsi.h
> @@ -69,6 +69,9 @@ struct intel_dsi {
>  	/* number of DSI lanes */
>  	unsigned int lane_count;
>  
> +	/* i2c bus associated with the slave device */
> +	int i2c_bus_num;
> +
>  	/*
>  	 * video mode pixel format
>  	 *
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> index 0032161e0f76..89fb0d90b694 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> @@ -86,6 +86,12 @@ static struct gpio_map vlv_gpio_table[] = {
>  	{ VLV_GPIO_NC_11_PANEL1_BKLTCTL },
>  };
>  
> +struct i2c_adapter_lookup {
> +	u16 slave_addr;
> +	struct intel_dsi *intel_dsi;
> +	acpi_handle dev_handle;
> +};
> +
>  #define CHV_GPIO_IDX_START_N		0
>  #define CHV_GPIO_IDX_START_E		73
>  #define CHV_GPIO_IDX_START_SW		100
> @@ -378,11 +384,98 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>  	return data;
>  }
>  
> +static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
> +{
> +	struct i2c_adapter_lookup *lookup = data;
> +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
> +	struct acpi_resource_i2c_serialbus *sb;
> +	struct i2c_adapter *adapter;
> +	acpi_handle adapter_handle;
> +	acpi_status status;
> +
> +	if (intel_dsi->i2c_bus_num >= 0 ||
> +	    !i2c_acpi_get_i2c_resource(ares, &sb))
> +		return 1;
> +
> +	if (lookup->slave_addr != sb->slave_address)
> +		return 1;
> +
> +	status = acpi_get_handle(lookup->dev_handle,
> +				 sb->resource_source.string_ptr,
> +				 &adapter_handle);
> +	if (ACPI_FAILURE(status))
> +		return 1;
> +
> +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
> +	if (adapter)
> +		intel_dsi->i2c_bus_num = adapter->nr;
> +
> +	return 1;
> +}
> +
>  static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
>  {
> -	DRM_DEBUG_KMS("Skipping I2C element execution\n");
> +	struct drm_device *drm_dev = intel_dsi->base.base.dev;
> +	struct device *dev = &drm_dev->pdev->dev;
> +	struct i2c_adapter *adapter;
> +	struct acpi_device *acpi_dev;
> +	struct list_head resource_list;
> +	struct i2c_adapter_lookup lookup;
> +	struct i2c_msg msg;
> +	int ret;
> +	u8 vbt_i2c_bus_num = *(data + 2);
> +	u16 slave_addr = *(u16 *)(data + 3);
> +	u8 reg_offset = *(data + 5);
> +	u8 payload_size = *(data + 6);
> +	u8 *payload_data;
> +
> +	if (intel_dsi->i2c_bus_num < 0) {
> +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> +
> +		acpi_dev = ACPI_COMPANION(dev);
> +		if (acpi_dev) {
> +			memset(&lookup, 0, sizeof(lookup));
> +			lookup.slave_addr = slave_addr;
> +			lookup.intel_dsi = intel_dsi;
> +			lookup.dev_handle = acpi_device_handle(acpi_dev);
> +
> +			INIT_LIST_HEAD(&resource_list);
> +			acpi_dev_get_resources(acpi_dev, &resource_list,
> +					       i2c_adapter_lookup,
> +					       &lookup);
> +			acpi_dev_free_resource_list(&resource_list);
> +		}
> +	}
>  
> -	return data + *(data + 6) + 7;
> +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
> +	if (!adapter) {
> +		DRM_DEV_ERROR(dev, "Cannot find a valid i2c bus for xfer\n");
> +		goto err_bus;
> +	}
> +
> +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
> +	if (!payload_data)
> +		goto err_alloc;
> +
> +	payload_data[0] = reg_offset;
> +	memcpy(&payload_data[1], (data + 7), payload_size);
> +
> +	msg.addr = slave_addr;
> +	msg.flags = 0;
> +	msg.len = payload_size + 1;
> +	msg.buf = payload_data;
> +
> +	ret = i2c_transfer(adapter, &msg, 1);
> +	if (ret < 0)
> +		DRM_DEV_ERROR(dev,
> +			      "Failed to xfer payload of size (%u) to reg (%u)\n",
> +			      payload_size, reg_offset);
> +
> +	kfree(payload_data);
> +err_alloc:
> +	i2c_put_adapter(adapter);
> +err_bus:
> +	return data + payload_size + 7;
>  }
>  
>  static const u8 *mipi_exec_spi(struct intel_dsi *intel_dsi, const u8 *data)
> @@ -683,6 +776,8 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
>  	intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
>  	intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
>  
> +	intel_dsi->i2c_bus_num = -1;
> +
>  	/* a regular driver would get the device in probe */
>  	for_each_dsi_port(port, intel_dsi->ports) {
>  		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
> -- 
> 2.21.1
> 

-- 
Matt Roper
Graphics Software Engineer
VTT-OSGC Platform Enablement
Intel Corporation
(916) 356-2795
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev3)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
                   ` (4 preceding siblings ...)
  2020-01-04 10:56 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
@ 2020-01-10 21:20 ` Patchwork
  2020-01-14  0:15 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4) Patchwork
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-10 21:20 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev3)
URL   : https://patchwork.freedesktop.org/series/71581/
State : failure

== Summary ==

Applying: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3)
Using index info to reconstruct a base tree...
M	drivers/gpu/drm/i915/display/intel_dsi.h
M	drivers/gpu/drm/i915/display/intel_dsi_vbt.c
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3)
  2020-01-10 18:11       ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3) Vivek Kasireddy
  2020-01-10 18:39         ` Matt Roper
@ 2020-01-13 11:27         ` Jani Nikula
  2020-01-13 22:11           ` [Intel-gfx] [PATCH] drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y Vivek Kasireddy
  1 sibling, 1 reply; 22+ messages in thread
From: Jani Nikula @ 2020-01-13 11:27 UTC (permalink / raw)
  To: Vivek Kasireddy, intel-gfx

On Fri, 10 Jan 2020, Vivek Kasireddy <vivek.kasireddy@intel.com> wrote:
> Parsing the i2c element is mainly done to transfer the payload from the
> MIPI sequence block to the relevant slave device. In some cases, the
> commands that are part of the payload can be used to turn on the backlight.
>
> This patch is actually a refactored version of this old patch:
> https://lists.freedesktop.org/archives/intel-gfx/2014-December/056897.html
>
> In addition to the refactoring, the original patch is augmented by looking up
> the i2c bus from ACPI NS instead of relying on the bus number provided
> in the VBT.

All this acpi business in the patch will fail the build on
CONFIG_ACPI=n.

BR,
Jani.

>
> This patch was tested on Aava Mobile's Inari 10 tablet. It enabled
> turning on the backlight by transfering the payload to the device.
>
> v2:
> - Add DRM_DEV_ERROR for invalid adapter and failed transfer and also
>   drop the DRM_DEBUG that existed originally. (Hans)
> - Add two gotos instead of one to clean things up properly.
>
> v3:
> - Identify the device on which this patch was tested in the commit
>   message (Ville)
>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dsi.h     |  3 +
>  drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 99 +++++++++++++++++++-
>  2 files changed, 100 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
> index 7481a5aa3084..6cef1356b4e6 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi.h
> +++ b/drivers/gpu/drm/i915/display/intel_dsi.h
> @@ -69,6 +69,9 @@ struct intel_dsi {
>  	/* number of DSI lanes */
>  	unsigned int lane_count;
>  
> +	/* i2c bus associated with the slave device */
> +	int i2c_bus_num;
> +
>  	/*
>  	 * video mode pixel format
>  	 *
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> index 0032161e0f76..89fb0d90b694 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> @@ -86,6 +86,12 @@ static struct gpio_map vlv_gpio_table[] = {
>  	{ VLV_GPIO_NC_11_PANEL1_BKLTCTL },
>  };
>  
> +struct i2c_adapter_lookup {
> +	u16 slave_addr;
> +	struct intel_dsi *intel_dsi;
> +	acpi_handle dev_handle;
> +};
> +
>  #define CHV_GPIO_IDX_START_N		0
>  #define CHV_GPIO_IDX_START_E		73
>  #define CHV_GPIO_IDX_START_SW		100
> @@ -378,11 +384,98 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>  	return data;
>  }
>  
> +static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
> +{
> +	struct i2c_adapter_lookup *lookup = data;
> +	struct intel_dsi *intel_dsi = lookup->intel_dsi;
> +	struct acpi_resource_i2c_serialbus *sb;
> +	struct i2c_adapter *adapter;
> +	acpi_handle adapter_handle;
> +	acpi_status status;
> +
> +	if (intel_dsi->i2c_bus_num >= 0 ||
> +	    !i2c_acpi_get_i2c_resource(ares, &sb))
> +		return 1;
> +
> +	if (lookup->slave_addr != sb->slave_address)
> +		return 1;
> +
> +	status = acpi_get_handle(lookup->dev_handle,
> +				 sb->resource_source.string_ptr,
> +				 &adapter_handle);
> +	if (ACPI_FAILURE(status))
> +		return 1;
> +
> +	adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
> +	if (adapter)
> +		intel_dsi->i2c_bus_num = adapter->nr;
> +
> +	return 1;
> +}
> +
>  static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
>  {
> -	DRM_DEBUG_KMS("Skipping I2C element execution\n");
> +	struct drm_device *drm_dev = intel_dsi->base.base.dev;
> +	struct device *dev = &drm_dev->pdev->dev;
> +	struct i2c_adapter *adapter;
> +	struct acpi_device *acpi_dev;
> +	struct list_head resource_list;
> +	struct i2c_adapter_lookup lookup;
> +	struct i2c_msg msg;
> +	int ret;
> +	u8 vbt_i2c_bus_num = *(data + 2);
> +	u16 slave_addr = *(u16 *)(data + 3);
> +	u8 reg_offset = *(data + 5);
> +	u8 payload_size = *(data + 6);
> +	u8 *payload_data;
> +
> +	if (intel_dsi->i2c_bus_num < 0) {
> +		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> +
> +		acpi_dev = ACPI_COMPANION(dev);
> +		if (acpi_dev) {
> +			memset(&lookup, 0, sizeof(lookup));
> +			lookup.slave_addr = slave_addr;
> +			lookup.intel_dsi = intel_dsi;
> +			lookup.dev_handle = acpi_device_handle(acpi_dev);
> +
> +			INIT_LIST_HEAD(&resource_list);
> +			acpi_dev_get_resources(acpi_dev, &resource_list,
> +					       i2c_adapter_lookup,
> +					       &lookup);
> +			acpi_dev_free_resource_list(&resource_list);
> +		}
> +	}
>  
> -	return data + *(data + 6) + 7;
> +	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
> +	if (!adapter) {
> +		DRM_DEV_ERROR(dev, "Cannot find a valid i2c bus for xfer\n");
> +		goto err_bus;
> +	}
> +
> +	payload_data = kzalloc(payload_size + 1, GFP_KERNEL);
> +	if (!payload_data)
> +		goto err_alloc;
> +
> +	payload_data[0] = reg_offset;
> +	memcpy(&payload_data[1], (data + 7), payload_size);
> +
> +	msg.addr = slave_addr;
> +	msg.flags = 0;
> +	msg.len = payload_size + 1;
> +	msg.buf = payload_data;
> +
> +	ret = i2c_transfer(adapter, &msg, 1);
> +	if (ret < 0)
> +		DRM_DEV_ERROR(dev,
> +			      "Failed to xfer payload of size (%u) to reg (%u)\n",
> +			      payload_size, reg_offset);
> +
> +	kfree(payload_data);
> +err_alloc:
> +	i2c_put_adapter(adapter);
> +err_bus:
> +	return data + payload_size + 7;
>  }
>  
>  static const u8 *mipi_exec_spi(struct intel_dsi *intel_dsi, const u8 *data)
> @@ -683,6 +776,8 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
>  	intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
>  	intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
>  
> +	intel_dsi->i2c_bus_num = -1;
> +
>  	/* a regular driver would get the device in probe */
>  	for_each_dsi_port(port, intel_dsi->ports) {
>  		mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] [PATCH] drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y
  2020-01-13 11:27         ` Jani Nikula
@ 2020-01-13 22:11           ` Vivek Kasireddy
  2020-01-14  7:55             ` Jani Nikula
  0 siblings, 1 reply; 22+ messages in thread
From: Vivek Kasireddy @ 2020-01-13 22:11 UTC (permalink / raw)
  To: intel-gfx; +Cc: Hulk Robot, Jani Nikula, Zhang Xiaoxu

Perform the i2c bus/adapter lookup from ACPI Namespace only if
ACPI is enabled in the kernel config. If ACPI is not enabled or if
the lookup fails, we'll fallback to using the VBT for identiying
the i2c bus.

This fixes commit 8cbf89db2941("drm/i915/dsi: Parse the I2C element
from the VBT MIPI sequence block (v3).")

Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Bob Paauwe <bob.j.paauwe@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 47 +++++++++++++-------
 1 file changed, 31 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
index 89fb0d90b694..6ec35d975bd7 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -384,6 +384,7 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
 	return data;
 }
 
+#ifdef CONFIG_ACPI
 static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
 {
 	struct i2c_adapter_lookup *lookup = data;
@@ -413,14 +414,41 @@ static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
 	return 1;
 }
 
-static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
+static void i2c_acpi_find_adapter(struct intel_dsi *intel_dsi,
+				  const u16 slave_addr)
 {
 	struct drm_device *drm_dev = intel_dsi->base.base.dev;
 	struct device *dev = &drm_dev->pdev->dev;
-	struct i2c_adapter *adapter;
 	struct acpi_device *acpi_dev;
 	struct list_head resource_list;
 	struct i2c_adapter_lookup lookup;
+
+	acpi_dev = ACPI_COMPANION(dev);
+	if (acpi_dev) {
+		memset(&lookup, 0, sizeof(lookup));
+		lookup.slave_addr = slave_addr;
+		lookup.intel_dsi = intel_dsi;
+		lookup.dev_handle = acpi_device_handle(acpi_dev);
+
+		INIT_LIST_HEAD(&resource_list);
+		acpi_dev_get_resources(acpi_dev, &resource_list,
+				       i2c_adapter_lookup,
+				       &lookup);
+		acpi_dev_free_resource_list(&resource_list);
+	}
+}
+#else
+static inline void i2c_acpi_find_adapter(struct intel_dsi *intel_dsi,
+					 const u16 slave_addr)
+{
+}
+#endif
+
+static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
+{
+	struct drm_device *drm_dev = intel_dsi->base.base.dev;
+	struct device *dev = &drm_dev->pdev->dev;
+	struct i2c_adapter *adapter;
 	struct i2c_msg msg;
 	int ret;
 	u8 vbt_i2c_bus_num = *(data + 2);
@@ -431,20 +459,7 @@ static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
 
 	if (intel_dsi->i2c_bus_num < 0) {
 		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
-
-		acpi_dev = ACPI_COMPANION(dev);
-		if (acpi_dev) {
-			memset(&lookup, 0, sizeof(lookup));
-			lookup.slave_addr = slave_addr;
-			lookup.intel_dsi = intel_dsi;
-			lookup.dev_handle = acpi_device_handle(acpi_dev);
-
-			INIT_LIST_HEAD(&resource_list);
-			acpi_dev_get_resources(acpi_dev, &resource_list,
-					       i2c_adapter_lookup,
-					       &lookup);
-			acpi_dev_free_resource_list(&resource_list);
-		}
+		i2c_acpi_find_adapter(intel_dsi, slave_addr);
 	}
 
 	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
-- 
2.21.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
                   ` (5 preceding siblings ...)
  2020-01-10 21:20 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev3) Patchwork
@ 2020-01-14  0:15 ` Patchwork
  2020-01-14  0:45 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-14  0:15 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
URL   : https://patchwork.freedesktop.org/series/71581/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
b0cb0e2f41fc drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y
-:15: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit 8cbf89db2941 ("drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3)")'
#15: 
This fixes commit 8cbf89db2941("drm/i915/dsi: Parse the I2C element

total: 1 errors, 0 warnings, 0 checks, 71 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
                   ` (6 preceding siblings ...)
  2020-01-14  0:15 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4) Patchwork
@ 2020-01-14  0:45 ` Patchwork
  2020-01-14  0:45 ` [Intel-gfx] ✗ Fi.CI.BUILD: warning " Patchwork
  2020-01-16  6:48 ` [Intel-gfx] ✓ Fi.CI.IGT: success " Patchwork
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-14  0:45 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
URL   : https://patchwork.freedesktop.org/series/71581/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7737 -> Patchwork_16086
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/index.html

Known issues
------------

  Here are the changes found in Patchwork_16086 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_basic@bad-close:
    - fi-icl-dsi:         [PASS][1] -> [DMESG-WARN][2] ([i915#109]) +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/fi-icl-dsi/igt@gem_basic@bad-close.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/fi-icl-dsi/igt@gem_basic@bad-close.html

  * igt@i915_selftest@live_active:
    - fi-icl-y:           [PASS][3] -> [DMESG-FAIL][4] ([i915#765])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/fi-icl-y/igt@i915_selftest@live_active.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/fi-icl-y/igt@i915_selftest@live_active.html

  
#### Possible fixes ####

  * igt@gem_exec_fence@basic-wait-default:
    - {fi-ehl-1}:         [INCOMPLETE][5] ([i915#937]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/fi-ehl-1/igt@gem_exec_fence@basic-wait-default.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/fi-ehl-1/igt@gem_exec_fence@basic-wait-default.html

  
#### Warnings ####

  * igt@i915_selftest@live_blt:
    - fi-hsw-4770:        [DMESG-FAIL][7] ([i915#553] / [i915#725]) -> [DMESG-FAIL][8] ([i915#725])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/fi-hsw-4770/igt@i915_selftest@live_blt.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#109]: https://gitlab.freedesktop.org/drm/intel/issues/109
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#765]: https://gitlab.freedesktop.org/drm/intel/issues/765
  [i915#937]: https://gitlab.freedesktop.org/drm/intel/issues/937


Participating hosts (40 -> 40)
------------------------------

  Additional (5): fi-hsw-peppy fi-ilk-650 fi-gdg-551 fi-ivb-3770 fi-blb-e6850 
  Missing    (5): fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7737 -> Patchwork_16086

  CI-20190529: 20190529
  CI_DRM_7737: 2a331333791d2e499ac843e1dc25cd8ea5bdc81f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5364: b7cb6ffdb65cbd233f5ddee2f2dabf97b34fa640 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16086: b0cb0e2f41fc1cdfa12e5e26b43812746b140c47 @ git://anongit.freedesktop.org/gfx-ci/linux


== Kernel 32bit build ==

Warning: Kernel 32bit buildtest failed:
https://intel-gfx-ci.01.org/Patchwork_16086/build_32bit.log

  CALL    scripts/checksyscalls.sh
  CALL    scripts/atomic/check-atomics.sh
  CHK     include/generated/compile.h
Kernel: arch/x86/boot/bzImage is ready  (#1)
  Building modules, stage 2.
  MODPOST 122 modules
ERROR: "__udivdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
scripts/Makefile.modpost:93: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 1
Makefile:1282: recipe for target 'modules' failed
make: *** [modules] Error 2


== Linux commits ==

b0cb0e2f41fc drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✗ Fi.CI.BUILD: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
                   ` (7 preceding siblings ...)
  2020-01-14  0:45 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2020-01-14  0:45 ` Patchwork
  2020-01-16  6:48 ` [Intel-gfx] ✓ Fi.CI.IGT: success " Patchwork
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-14  0:45 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
URL   : https://patchwork.freedesktop.org/series/71581/
State : warning

== Summary ==

CALL    scripts/checksyscalls.sh
  CALL    scripts/atomic/check-atomics.sh
  CHK     include/generated/compile.h
Kernel: arch/x86/boot/bzImage is ready  (#1)
  Building modules, stage 2.
  MODPOST 122 modules
ERROR: "__udivdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
scripts/Makefile.modpost:93: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 1
Makefile:1282: recipe for target 'modules' failed
make: *** [modules] Error 2

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/build_32bit.log
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y
  2020-01-13 22:11           ` [Intel-gfx] [PATCH] drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y Vivek Kasireddy
@ 2020-01-14  7:55             ` Jani Nikula
  0 siblings, 0 replies; 22+ messages in thread
From: Jani Nikula @ 2020-01-14  7:55 UTC (permalink / raw)
  To: Vivek Kasireddy, intel-gfx; +Cc: Hulk Robot, Zhang Xiaoxu

On Mon, 13 Jan 2020, Vivek Kasireddy <vivek.kasireddy@intel.com> wrote:
> Perform the i2c bus/adapter lookup from ACPI Namespace only if
> ACPI is enabled in the kernel config. If ACPI is not enabled or if
> the lookup fails, we'll fallback to using the VBT for identiying
> the i2c bus.
>
> This fixes commit 8cbf89db2941("drm/i915/dsi: Parse the I2C element
> from the VBT MIPI sequence block (v3).")

IOW,

Fixes: 8cbf89db2941 ("drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3)")

Also, please post as a fresh patch, not in reply in the middle of a
thread, to not confuse CI.

BR,
Jani.


>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Nabendu Maiti <nabendu.bikash.maiti@intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Bob Paauwe <bob.j.paauwe@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
> Reported-by: Hulk Robot <hulkci@huawei.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 47 +++++++++++++-------
>  1 file changed, 31 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> index 89fb0d90b694..6ec35d975bd7 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
> @@ -384,6 +384,7 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
>  	return data;
>  }
>  
> +#ifdef CONFIG_ACPI
>  static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
>  {
>  	struct i2c_adapter_lookup *lookup = data;
> @@ -413,14 +414,41 @@ static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
>  	return 1;
>  }
>  
> -static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
> +static void i2c_acpi_find_adapter(struct intel_dsi *intel_dsi,
> +				  const u16 slave_addr)
>  {
>  	struct drm_device *drm_dev = intel_dsi->base.base.dev;
>  	struct device *dev = &drm_dev->pdev->dev;
> -	struct i2c_adapter *adapter;
>  	struct acpi_device *acpi_dev;
>  	struct list_head resource_list;
>  	struct i2c_adapter_lookup lookup;
> +
> +	acpi_dev = ACPI_COMPANION(dev);
> +	if (acpi_dev) {
> +		memset(&lookup, 0, sizeof(lookup));
> +		lookup.slave_addr = slave_addr;
> +		lookup.intel_dsi = intel_dsi;
> +		lookup.dev_handle = acpi_device_handle(acpi_dev);
> +
> +		INIT_LIST_HEAD(&resource_list);
> +		acpi_dev_get_resources(acpi_dev, &resource_list,
> +				       i2c_adapter_lookup,
> +				       &lookup);
> +		acpi_dev_free_resource_list(&resource_list);
> +	}
> +}
> +#else
> +static inline void i2c_acpi_find_adapter(struct intel_dsi *intel_dsi,
> +					 const u16 slave_addr)
> +{
> +}
> +#endif
> +
> +static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
> +{
> +	struct drm_device *drm_dev = intel_dsi->base.base.dev;
> +	struct device *dev = &drm_dev->pdev->dev;
> +	struct i2c_adapter *adapter;
>  	struct i2c_msg msg;
>  	int ret;
>  	u8 vbt_i2c_bus_num = *(data + 2);
> @@ -431,20 +459,7 @@ static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
>  
>  	if (intel_dsi->i2c_bus_num < 0) {
>  		intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
> -
> -		acpi_dev = ACPI_COMPANION(dev);
> -		if (acpi_dev) {
> -			memset(&lookup, 0, sizeof(lookup));
> -			lookup.slave_addr = slave_addr;
> -			lookup.intel_dsi = intel_dsi;
> -			lookup.dev_handle = acpi_device_handle(acpi_dev);
> -
> -			INIT_LIST_HEAD(&resource_list);
> -			acpi_dev_get_resources(acpi_dev, &resource_list,
> -					       i2c_adapter_lookup,
> -					       &lookup);
> -			acpi_dev_free_resource_list(&resource_list);
> -		}
> +		i2c_acpi_find_adapter(intel_dsi, slave_addr);
>  	}
>  
>  	adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
  2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
                   ` (8 preceding siblings ...)
  2020-01-14  0:45 ` [Intel-gfx] ✗ Fi.CI.BUILD: warning " Patchwork
@ 2020-01-16  6:48 ` Patchwork
  9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2020-01-16  6:48 UTC (permalink / raw)
  To: Vivek Kasireddy; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4)
URL   : https://patchwork.freedesktop.org/series/71581/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_7737_full -> Patchwork_16086_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Known issues
------------

  Here are the changes found in Patchwork_16086_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_isolation@rcs0-s3:
    - shard-kbl:          [PASS][1] -> [DMESG-WARN][2] ([i915#180]) +5 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-kbl6/igt@gem_ctx_isolation@rcs0-s3.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-kbl2/igt@gem_ctx_isolation@rcs0-s3.html

  * igt@gem_ctx_persistence@vcs1-cleanup:
    - shard-iclb:         [PASS][3] -> [SKIP][4] ([fdo#109276] / [fdo#112080])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb2/igt@gem_ctx_persistence@vcs1-cleanup.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb6/igt@gem_ctx_persistence@vcs1-cleanup.html

  * igt@gem_ctx_persistence@vcs1-mixed-process:
    - shard-iclb:         [PASS][5] -> [FAIL][6] ([i915#679])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb4/igt@gem_ctx_persistence@vcs1-mixed-process.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb4/igt@gem_ctx_persistence@vcs1-mixed-process.html

  * igt@gem_eio@in-flight-contexts-1us:
    - shard-snb:          [PASS][7] -> [FAIL][8] ([i915#490])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-snb2/igt@gem_eio@in-flight-contexts-1us.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-snb4/igt@gem_eio@in-flight-contexts-1us.html

  * igt@gem_exec_balancer@nop:
    - shard-tglb:         [PASS][9] -> [INCOMPLETE][10] ([fdo#111736] / [i915#472])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb4/igt@gem_exec_balancer@nop.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb3/igt@gem_exec_balancer@nop.html

  * igt@gem_exec_nop@basic-series:
    - shard-tglb:         [PASS][11] -> [INCOMPLETE][12] ([i915#472])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb4/igt@gem_exec_nop@basic-series.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb1/igt@gem_exec_nop@basic-series.html

  * igt@gem_exec_parallel@vcs1-fds:
    - shard-iclb:         [PASS][13] -> [SKIP][14] ([fdo#112080]) +8 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb1/igt@gem_exec_parallel@vcs1-fds.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb3/igt@gem_exec_parallel@vcs1-fds.html

  * igt@gem_exec_schedule@pi-shared-iova-bsd:
    - shard-iclb:         [PASS][15] -> [SKIP][16] ([i915#677]) +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb5/igt@gem_exec_schedule@pi-shared-iova-bsd.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb2/igt@gem_exec_schedule@pi-shared-iova-bsd.html

  * igt@gem_exec_schedule@preemptive-hang-bsd:
    - shard-iclb:         [PASS][17] -> [SKIP][18] ([fdo#112146]) +7 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb3/igt@gem_exec_schedule@preemptive-hang-bsd.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb1/igt@gem_exec_schedule@preemptive-hang-bsd.html

  * igt@gem_persistent_relocs@forked-interruptible-thrash-inactive:
    - shard-apl:          [PASS][19] -> [TIMEOUT][20] ([fdo#112271] / [i915#530])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-apl3/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-apl2/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
    - shard-glk:          [PASS][21] -> [FAIL][22] ([i915#644])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-glk7/igt@gem_ppgtt@flink-and-close-vma-leak.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-glk5/igt@gem_ppgtt@flink-and-close-vma-leak.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-kbl:          [PASS][23] -> [DMESG-WARN][24] ([i915#716])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-kbl1/igt@gen9_exec_parse@allowed-all.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-kbl1/igt@gen9_exec_parse@allowed-all.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-iclb:         [PASS][25] -> [FAIL][26] ([i915#454]) +1 similar issue
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb1/igt@i915_pm_dc@dc6-dpms.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb3/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_rpm@system-suspend-execbuf:
    - shard-skl:          [PASS][27] -> [INCOMPLETE][28] ([i915#151] / [i915#69])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-skl6/igt@i915_pm_rpm@system-suspend-execbuf.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-skl3/igt@i915_pm_rpm@system-suspend-execbuf.html

  * igt@kms_color@pipe-a-ctm-0-5:
    - shard-skl:          [PASS][29] -> [DMESG-WARN][30] ([i915#109]) +1 similar issue
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-skl6/igt@kms_color@pipe-a-ctm-0-5.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-skl7/igt@kms_color@pipe-a-ctm-0-5.html

  * igt@kms_cursor_crc@pipe-b-cursor-64x64-random:
    - shard-hsw:          [PASS][31] -> [DMESG-WARN][32] ([IGT#6])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-hsw7/igt@kms_cursor_crc@pipe-b-cursor-64x64-random.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-hsw7/igt@kms_cursor_crc@pipe-b-cursor-64x64-random.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-apl:          [PASS][33] -> [DMESG-WARN][34] ([i915#180]) +1 similar issue
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-apl3/igt@kms_flip@flip-vs-suspend-interruptible.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-apl2/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite:
    - shard-tglb:         [PASS][35] -> [FAIL][36] ([i915#49]) +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_psr@no_drrs:
    - shard-iclb:         [PASS][37] -> [FAIL][38] ([i915#173])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb5/igt@kms_psr@no_drrs.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb1/igt@kms_psr@no_drrs.html

  * igt@kms_psr@psr2_primary_mmap_cpu:
    - shard-iclb:         [PASS][39] -> [SKIP][40] ([fdo#109441])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb2/igt@kms_psr@psr2_primary_mmap_cpu.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb6/igt@kms_psr@psr2_primary_mmap_cpu.html

  * igt@kms_setmode@basic:
    - shard-apl:          [PASS][41] -> [FAIL][42] ([i915#31])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-apl1/igt@kms_setmode@basic.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-apl8/igt@kms_setmode@basic.html

  * igt@perf_pmu@enable-race-vcs0:
    - shard-tglb:         [PASS][43] -> [INCOMPLETE][44] ([i915#472] / [i915#480])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb7/igt@perf_pmu@enable-race-vcs0.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb5/igt@perf_pmu@enable-race-vcs0.html

  * igt@prime_vgem@fence-wait-bsd2:
    - shard-iclb:         [PASS][45] -> [SKIP][46] ([fdo#109276]) +13 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb1/igt@prime_vgem@fence-wait-bsd2.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb3/igt@prime_vgem@fence-wait-bsd2.html

  * igt@prime_vgem@sync-render:
    - shard-tglb:         [PASS][47] -> [INCOMPLETE][48] ([i915#409])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb3/igt@prime_vgem@sync-render.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb8/igt@prime_vgem@sync-render.html

  
#### Possible fixes ####

  * igt@gem_busy@extended-parallel-vcs1:
    - shard-iclb:         [SKIP][49] ([fdo#112080]) -> [PASS][50] +8 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb3/igt@gem_busy@extended-parallel-vcs1.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb1/igt@gem_busy@extended-parallel-vcs1.html

  * igt@gem_ctx_isolation@bcs0-s3:
    - shard-apl:          [DMESG-WARN][51] ([i915#180]) -> [PASS][52] +3 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-apl1/igt@gem_ctx_isolation@bcs0-s3.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-apl3/igt@gem_ctx_isolation@bcs0-s3.html

  * igt@gem_ctx_isolation@vcs1-dirty-create:
    - shard-iclb:         [SKIP][53] ([fdo#109276] / [fdo#112080]) -> [PASS][54]
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb8/igt@gem_ctx_isolation@vcs1-dirty-create.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb4/igt@gem_ctx_isolation@vcs1-dirty-create.html

  * igt@gem_ctx_isolation@vecs0-s3:
    - shard-iclb:         [DMESG-WARN][55] ([fdo#111764]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb8/igt@gem_ctx_isolation@vecs0-s3.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb4/igt@gem_ctx_isolation@vecs0-s3.html

  * igt@gem_exec_schedule@pi-distinct-iova-bsd:
    - shard-iclb:         [SKIP][57] ([i915#677]) -> [PASS][58]
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb2/igt@gem_exec_schedule@pi-distinct-iova-bsd.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb6/igt@gem_exec_schedule@pi-distinct-iova-bsd.html

  * igt@gem_exec_schedule@pi-shared-iova-bsd2:
    - shard-iclb:         [SKIP][59] ([fdo#109276]) -> [PASS][60] +13 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb5/igt@gem_exec_schedule@pi-shared-iova-bsd2.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb1/igt@gem_exec_schedule@pi-shared-iova-bsd2.html

  * igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd:
    - shard-iclb:         [SKIP][61] ([fdo#112146]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb1/igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb3/igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd.html

  * igt@gem_exec_suspend@basic-s3:
    - shard-tglb:         [INCOMPLETE][63] ([fdo#111736] / [i915#460] / [i915#472]) -> [PASS][64]
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb3/igt@gem_exec_suspend@basic-s3.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb4/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive:
    - shard-glk:          [TIMEOUT][65] ([fdo#112271] / [i915#530]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-glk9/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-glk1/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html

  * igt@gem_tiled_blits@normal:
    - shard-tglb:         [INCOMPLETE][67] -> [PASS][68]
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb2/igt@gem_tiled_blits@normal.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb4/igt@gem_tiled_blits@normal.html

  * igt@i915_pm_dc@dc5-dpms:
    - shard-iclb:         [FAIL][69] ([i915#447]) -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb3/igt@i915_pm_dc@dc5-dpms.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb2/igt@i915_pm_dc@dc5-dpms.html

  * igt@i915_pm_rps@reset:
    - shard-iclb:         [FAIL][71] ([i915#413]) -> [PASS][72] +1 similar issue
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb6/igt@i915_pm_rps@reset.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb3/igt@i915_pm_rps@reset.html

  * igt@kms_color@pipe-a-ctm-green-to-red:
    - shard-skl:          [DMESG-WARN][73] ([i915#109]) -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-skl8/igt@kms_color@pipe-a-ctm-green-to-red.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-skl7/igt@kms_color@pipe-a-ctm-green-to-red.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
    - shard-kbl:          [DMESG-WARN][75] ([i915#180]) -> [PASS][76] +7 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-skl:          [FAIL][77] ([i915#79]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-skl1/igt@kms_flip@flip-vs-expired-vblank.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-skl3/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
    - shard-tglb:         [FAIL][79] ([i915#49]) -> [PASS][80] +2 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb6/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b:
    - shard-snb:          [SKIP][81] ([fdo#109271]) -> [PASS][82] +3 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-snb2/igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-snb1/igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b.html

  * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:
    - shard-skl:          [FAIL][83] ([fdo#108145]) -> [PASS][84]
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-skl2/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-skl5/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
    - shard-skl:          [FAIL][85] ([fdo#108145] / [i915#265]) -> [PASS][86]
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-skl10/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-skl3/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html

  * igt@kms_psr@psr2_cursor_plane_move:
    - shard-iclb:         [SKIP][87] ([fdo#109441]) -> [PASS][88] +3 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb3/igt@kms_psr@psr2_cursor_plane_move.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb2/igt@kms_psr@psr2_cursor_plane_move.html

  
#### Warnings ####

  * igt@gem_ctx_isolation@vcs1-nonpriv-switch:
    - shard-iclb:         [FAIL][89] ([IGT#28]) -> [SKIP][90] ([fdo#109276] / [fdo#112080])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb4/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb5/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html

  * igt@gem_eio@kms:
    - shard-snb:          [DMESG-WARN][91] ([i915#444]) -> [INCOMPLETE][92] ([i915#82])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-snb5/igt@gem_eio@kms.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-snb1/igt@gem_eio@kms.html

  * igt@gem_tiled_blits@normal:
    - shard-hsw:          [FAIL][93] ([i915#818]) -> [FAIL][94] ([i915#694]) +1 similar issue
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-hsw2/igt@gem_tiled_blits@normal.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-hsw5/igt@gem_tiled_blits@normal.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-tglb:         [FAIL][95] ([i915#454]) -> [SKIP][96] ([i915#468])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb7/igt@i915_pm_dc@dc6-psr.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb8/igt@i915_pm_dc@dc6-psr.html

  * igt@i915_pm_rpm@gem-execbuf-stress:
    - shard-snb:          [SKIP][97] ([fdo#109271]) -> [INCOMPLETE][98] ([i915#82])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-snb4/igt@i915_pm_rpm@gem-execbuf-stress.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-snb5/igt@i915_pm_rpm@gem-execbuf-stress.html

  * igt@kms_atomic_transition@3x-modeset-transitions-nonblocking:
    - shard-snb:          [SKIP][99] ([fdo#109271]) -> [SKIP][100] ([fdo#109271] / [i915#439])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-snb2/igt@kms_atomic_transition@3x-modeset-transitions-nonblocking.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-snb1/igt@kms_atomic_transition@3x-modeset-transitions-nonblocking.html

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
    - shard-iclb:         [SKIP][101] ([fdo#109349]) -> [DMESG-WARN][102] ([fdo#107724])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-iclb3/igt@kms_dp_dsc@basic-dsc-enable-edp.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html

  * igt@runner@aborted:
    - shard-kbl:          [FAIL][103] ([i915#974]) -> ([FAIL][104], [FAIL][105]) ([i915#716] / [i915#974])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-kbl3/igt@runner@aborted.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-kbl1/igt@runner@aborted.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-kbl1/igt@runner@aborted.html
    - shard-tglb:         [FAIL][106] ([i915#584]) -> ([FAIL][107], [FAIL][108]) ([i915#409] / [i915#584])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-tglb6/igt@runner@aborted.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb8/igt@runner@aborted.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-tglb3/igt@runner@aborted.html
    - shard-snb:          ([FAIL][109], [FAIL][110]) ([i915#436] / [i915#974]) -> [FAIL][111] ([i915#974])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-snb5/igt@runner@aborted.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7737/shard-snb1/igt@runner@aborted.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/shard-snb1/igt@runner@aborted.html

  
  [IGT#28]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/28
  [IGT#6]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/6
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#111736]: https://bugs.freedesktop.org/show_bug.cgi?id=111736
  [fdo#111764]: https://bugs.freedesktop.org/show_bug.cgi?id=111764
  [fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
  [fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
  [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
  [i915#109]: https://gitlab.freedesktop.org/drm/intel/issues/109
  [i915#151]: https://gitlab.freedesktop.org/drm/intel/issues/151
  [i915#173]: https://gitlab.freedesktop.org/drm/intel/issues/173
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
  [i915#409]: https://gitlab.freedesktop.org/drm/intel/issues/409
  [i915#413]: https://gitlab.freedesktop.org/drm/intel/issues/413
  [i915#436]: https://gitlab.freedesktop.org/drm/intel/issues/436
  [i915#439]: https://gitlab.freedesktop.org/drm/intel/issues/439
  [i915#444]: https://gitlab.freedesktop.org/drm/intel/issues/444
  [i915#447]: https://gitlab.freedesktop.org/drm/intel/issues/447
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#460]: https://gitlab.freedesktop.org/drm/intel/issues/460
  [i915#468]: https://gitlab.freedesktop.org/drm/intel/issues/468
  [i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472
  [i915#480]: https://gitlab.freedesktop.org/drm/intel/issues/480
  [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
  [i915#490]: https://gitlab.freedesktop.org/drm/intel/issues/490
  [i915#530]: https://gitlab.freedesktop.org/drm/intel/issues/530
  [i915#584]: https://gitlab.freedesktop.org/drm/intel/issues/584
  [i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644
  [i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677
  [i915#679]: https://gitlab.freedesktop.org/drm/intel/issues/679
  [i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69
  [i915#694]: https://gitlab.freedesktop.org/drm/intel/issues/694
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#818]: https://gitlab.freedesktop.org/drm/intel/issues/818
  [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
  [i915#974]: https://gitlab.freedesktop.org/drm/intel/issues/974


Participating hosts (11 -> 10)
------------------------------

  Missing    (1): pig-hsw-4770r 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7737 -> Patchwork_16086

  CI-20190529: 20190529
  CI_DRM_7737: 2a331333791d2e499ac843e1dc25cd8ea5bdc81f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5364: b7cb6ffdb65cbd233f5ddee2f2dabf97b34fa640 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_16086: b0cb0e2f41fc1cdfa12e5e26b43812746b140c47 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16086/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2020-01-16  6:48 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-03  0:00 [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block Vivek Kasireddy
2020-01-03  0:52 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
2020-01-03 11:05 ` [Intel-gfx] [PATCH] " Hans de Goede
2020-01-04  0:00   ` Vivek Kasireddy
2020-01-04 16:44     ` Hans de Goede
2020-01-07 16:49     ` Ville Syrjälä
2020-01-07 19:36       ` Matt Roper
2020-01-04  1:09   ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v2) Vivek Kasireddy
2020-01-04 16:45     ` Hans de Goede
2020-01-10 18:11       ` [Intel-gfx] [PATCH] drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3) Vivek Kasireddy
2020-01-10 18:39         ` Matt Roper
2020-01-13 11:27         ` Jani Nikula
2020-01-13 22:11           ` [Intel-gfx] [PATCH] drm/i915/dsi: Lookup the i2c bus from ACPI NS only if CONFIG_ACPI=y Vivek Kasireddy
2020-01-14  7:55             ` Jani Nikula
2020-01-04  1:22 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev2) Patchwork
2020-01-04  1:47 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-01-04 10:56 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2020-01-10 21:20 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev3) Patchwork
2020-01-14  0:15 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (rev4) Patchwork
2020-01-14  0:45 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-01-14  0:45 ` [Intel-gfx] ✗ Fi.CI.BUILD: warning " Patchwork
2020-01-16  6:48 ` [Intel-gfx] ✓ Fi.CI.IGT: success " 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.