Merge tag 'topic/core-stuff-2014-12-10' of git://anongit.freedesktop.org/drm-intel...
authorDave Airlie <airlied@redhat.com>
Thu, 11 Dec 2014 00:12:57 +0000 (10:12 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 11 Dec 2014 00:12:57 +0000 (10:12 +1000)
Merge drm core fixes from Daniel.

* tag 'topic/core-stuff-2014-12-10' of git://anongit.freedesktop.org/drm-intel:
  drm: Zero out DRM object memory upon cleanup
  drm: fix a typo in a comment
  drm: fix a word repetition in a comment
  drm: Fix memory leak at error path of drm_read()
  drm/Documentation: Fix rowspan value in drm-kms-properties
  drm/edid: Restore kerneldoc consistency
  drm/edid: new drm_edid_block_checksum helper function V3
  drm/edid: shorten log output in case of all zeroes edid block
  drm/edid: move drm_edid_is_zero to top, make edid argument const

1  2 
Documentation/DocBook/drm.tmpl
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_edid.c

index 60c1063d4178296bba934596f026dfa79aac1025,b344bc3b0d77ce84bb6597591843b26771df33a5..7a44d9d43c49e7d2393ffe9cc849cb3030c244ec
@@@ -2550,8 -2546,8 +2550,8 @@@ void intel_crt_init(struct drm_device *
        <td valign="top" >Description/Restrictions</td>
        </tr>
        <tr>
-       <td rowspan="23" valign="top" >DRM</td>
 -      <td rowspan="24" valign="top" >DRM</td>
 -      <td rowspan="3" valign="top" >Generic</td>
++      <td rowspan="25" valign="top" >DRM</td>
 +      <td rowspan="4" valign="top" >Generic</td>
        <td valign="top" >“EDID”</td>
        <td valign="top" >BLOB | IMMUTABLE</td>
        <td valign="top" >0</td>
Simple merge
index 72fd8820e186278d8a6bfcf3ff76a2f22999aacb,21cc45cf3367598c2f4310aeda55d45a97de5f41..53bc7a628909453868aa4fd3e10f7c670d738698
@@@ -1015,8 -1014,24 +1015,27 @@@ module_param_named(edid_fixup, edid_fix
  MODULE_PARM_DESC(edid_fixup,
                 "Minimum number of valid EDID header bytes (0-8, default 6)");
  
 +static void drm_get_displayid(struct drm_connector *connector,
 +                            struct edid *edid);
++
+ static int drm_edid_block_checksum(const u8 *raw_edid)
+ {
+       int i;
+       u8 csum = 0;
+       for (i = 0; i < EDID_LENGTH; i++)
+               csum += raw_edid[i];
+       return csum;
+ }
+ static bool drm_edid_is_zero(const u8 *in_edid, int length)
+ {
+       if (memchr_inv(in_edid, 0, length))
+               return false;
+       return true;
+ }
  /**
   * drm_edid_block_valid - Sanity check the EDID block (base or extension)
   * @raw_edid: pointer to raw EDID block
@@@ -1179,34 -1196,8 +1200,26 @@@ drm_do_probe_ddc_edid(void *data, u8 *b
        return ret == xfers ? 0 : -1;
  }
  
- static bool drm_edid_is_zero(u8 *in_edid, int length)
- {
-       if (memchr_inv(in_edid, 0, length))
-               return false;
-       return true;
- }
 -static u8 *
 -drm_do_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter)
 +/**
 + * drm_do_get_edid - get EDID data using a custom EDID block read function
 + * @connector: connector we're probing
 + * @get_edid_block: EDID block read function
 + * @data: private data passed to the block read function
 + *
 + * When the I2C adapter connected to the DDC bus is hidden behind a device that
 + * exposes a different interface to read EDID blocks this function can be used
 + * to get EDID data using a custom block read function.
 + *
 + * As in the general case the DDC bus is accessible by the kernel at the I2C
 + * level, drivers must make all reasonable efforts to expose it as an I2C
 + * adapter and use drm_get_edid() instead of abusing this function.
 + *
 + * Return: Pointer to valid EDID or NULL if we couldn't find any.
 + */
 +struct edid *drm_do_get_edid(struct drm_connector *connector,
 +      int (*get_edid_block)(void *data, u8 *buf, unsigned int block,
 +                            size_t len),
 +      void *data)
  {
        int i, j = 0, valid_extensions = 0;
        u8 *block, *new;