[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