[Intel-gfx] [PATCH 2/2] drm/i915: Set invert bit for hpd based on VBT

kbuild test robot lkp at intel.com
Fri Feb 12 13:37:12 UTC 2016


Hi Shubhangi,

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20160212]
[cannot apply to v4.5-rc3]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Shubhangi-Shrivastava/drm-i915-Set-invert-bit-for-hpd-based-on-VBT/20160212-203937
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-x000-201606 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/drm/drm_dp_helper.h:26,
                    from drivers/gpu/drm/i915/intel_bios.c:28:
   drivers/gpu/drm/i915/intel_bios.c: In function 'intel_bios_is_port_hpd_inverted':
   drivers/gpu/drm/i915/intel_bios.c:121:40: error: 'struct common_child_dev_config' has no member named 'hpd_invert'
      if (dev_priv->vbt.child_dev[i].common.hpd_invert == 1) {
                                           ^
   include/linux/compiler.h:147:28: note: in definition of macro '__trace_if'
     if (__builtin_constant_p((cond)) ? !!(cond) :   \
                               ^
>> drivers/gpu/drm/i915/intel_bios.c:121:3: note: in expansion of macro 'if'
      if (dev_priv->vbt.child_dev[i].common.hpd_invert == 1) {
      ^
   drivers/gpu/drm/i915/intel_bios.c:121:40: error: 'struct common_child_dev_config' has no member named 'hpd_invert'
      if (dev_priv->vbt.child_dev[i].common.hpd_invert == 1) {
                                           ^
   include/linux/compiler.h:147:40: note: in definition of macro '__trace_if'
     if (__builtin_constant_p((cond)) ? !!(cond) :   \
                                           ^
>> drivers/gpu/drm/i915/intel_bios.c:121:3: note: in expansion of macro 'if'
      if (dev_priv->vbt.child_dev[i].common.hpd_invert == 1) {
      ^
   drivers/gpu/drm/i915/intel_bios.c:121:40: error: 'struct common_child_dev_config' has no member named 'hpd_invert'
      if (dev_priv->vbt.child_dev[i].common.hpd_invert == 1) {
                                           ^
   include/linux/compiler.h:158:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^
>> drivers/gpu/drm/i915/intel_bios.c:121:3: note: in expansion of macro 'if'
      if (dev_priv->vbt.child_dev[i].common.hpd_invert == 1) {
      ^

vim +/if +121 drivers/gpu/drm/i915/intel_bios.c

    22	 *
    23	 * Authors:
    24	 *    Eric Anholt <eric at anholt.net>
    25	 *
    26	 */
    27	
  > 28	#include <drm/drm_dp_helper.h>
    29	#include <drm/drmP.h>
    30	#include <drm/i915_drm.h>
    31	#include "i915_drv.h"
    32	#include "intel_bios.h"
    33	
    34	/**
    35	 * DOC: Video BIOS Table (VBT)
    36	 *
    37	 * The Video BIOS Table, or VBT, provides platform and board specific
    38	 * configuration information to the driver that is not discoverable or available
    39	 * through other means. The configuration is mostly related to display
    40	 * hardware. The VBT is available via the ACPI OpRegion or, on older systems, in
    41	 * the PCI ROM.
    42	 *
    43	 * The VBT consists of a VBT Header (defined as &struct vbt_header), a BDB
    44	 * Header (&struct bdb_header), and a number of BIOS Data Blocks (BDB) that
    45	 * contain the actual configuration information. The VBT Header, and thus the
    46	 * VBT, begins with "$VBT" signature. The VBT Header contains the offset of the
    47	 * BDB Header. The data blocks are concatenated after the BDB Header. The data
    48	 * blocks have a 1-byte Block ID, 2-byte Block Size, and Block Size bytes of
    49	 * data. (Block 53, the MIPI Sequence Block is an exception.)
    50	 *
    51	 * The driver parses the VBT during load. The relevant information is stored in
    52	 * driver private data for ease of use, and the actual VBT is not read after
    53	 * that.
    54	 */
    55	
    56	#define	SLAVE_ADDR1	0x70
    57	#define	SLAVE_ADDR2	0x72
    58	
    59	static int panel_type;
    60	
    61	/* Get BDB block size given a pointer to Block ID. */
    62	static u32 _get_blocksize(const u8 *block_base)
    63	{
    64		/* The MIPI Sequence Block v3+ has a separate size field. */
    65		if (*block_base == BDB_MIPI_SEQUENCE && *(block_base + 3) >= 3)
    66			return *((const u32 *)(block_base + 4));
    67		else
    68			return *((const u16 *)(block_base + 1));
    69	}
    70	
    71	/* Get BDB block size give a pointer to data after Block ID and Block Size. */
    72	static u32 get_blocksize(const void *block_data)
    73	{
    74		return _get_blocksize(block_data - 3);
    75	}
    76	
    77	static const void *
    78	find_section(const void *_bdb, int section_id)
    79	{
    80		const struct bdb_header *bdb = _bdb;
    81		const u8 *base = _bdb;
    82		int index = 0;
    83		u32 total, current_size;
    84		u8 current_id;
    85	
    86		/* skip to first section */
    87		index += bdb->header_size;
    88		total = bdb->bdb_size;
    89	
    90		/* walk the sections looking for section_id */
    91		while (index + 3 < total) {
    92			current_id = *(base + index);
    93			current_size = _get_blocksize(base + index);
    94			index += 3;
    95	
    96			if (index + current_size > total)
    97				return NULL;
    98	
    99			if (current_id == section_id)
   100				return base + index;
   101	
   102			index += current_size;
   103		}
   104	
   105		return NULL;
   106	}
   107	
   108	bool
   109	intel_bios_is_port_hpd_inverted(struct drm_device *dev, enum port port)
   110	{
   111		struct drm_i915_private *dev_priv = dev->dev_private;
   112		int i;
   113	
   114		if (!IS_BROXTON(dev)) {
   115			DRM_ERROR("Bit inversion is not required in this platform\n");
   116			return false;
   117		}
   118	
   119		for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
   120	
 > 121			if (dev_priv->vbt.child_dev[i].common.hpd_invert == 1) {
   122	
   123				switch (dev_priv->vbt.child_dev[i].common.dvo_port) {
   124				case DVO_PORT_DPA:

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 24181 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20160212/23ed886d/attachment-0001.obj>


More information about the Intel-gfx mailing list