drivers/gpu/drm/openchrome/via_drv.h |    4 +--
 drivers/gpu/drm/openchrome/via_fp.c  |   36 +++++++++++++++++++++++++++++++----
 2 files changed, 34 insertions(+), 6 deletions(-)

New commits:
commit 9d18df4289d1fb585b39f32ddbf6bed6f13a870e
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Wed Nov 22 03:10:52 2017 -0800

    drm/openchrome: Version bumped to 3.0.58
    
    An improvement in FP detection.
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_drv.h 
b/drivers/gpu/drm/openchrome/via_drv.h
index 36630636efe9..ef1e3dcf63c3 100644
--- a/drivers/gpu/drm/openchrome/via_drv.h
+++ b/drivers/gpu/drm/openchrome/via_drv.h
@@ -30,11 +30,11 @@
 #define DRIVER_AUTHOR       "OpenChrome Project"
 #define DRIVER_NAME         "openchrome"
 #define DRIVER_DESC         "OpenChrome DRM for VIA Technologies Chrome IGP"
-#define DRIVER_DATE         "20171106"
+#define DRIVER_DATE         "20171122"
 
 #define DRIVER_MAJOR           3
 #define DRIVER_MINOR           0
-#define DRIVER_PATCHLEVEL      57
+#define DRIVER_PATCHLEVEL      58
 
 #include <linux/module.h>
 
commit 1e6c54a62f1c7d71dd554a2ae532d8dbd2a20e0b
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Wed Nov 22 02:48:31 2017 -0800

    drm/openchrome: Probing for FP's I2C bus support
    
    This improves the FP detection compared to the previous code.
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_fp.c 
b/drivers/gpu/drm/openchrome/via_fp.c
index 56719a3dc7ed..87ee9ac0b570 100644
--- a/drivers/gpu/drm/openchrome/via_fp.c
+++ b/drivers/gpu/drm/openchrome/via_fp.c
@@ -980,6 +980,9 @@ struct drm_connector_helper_funcs 
via_fp_connector_helper_funcs = {
 void via_fp_probe(struct drm_device *dev)
 {
        struct via_device *dev_priv = dev->dev_private;
+       struct drm_connector connector;
+       struct i2c_adapter *i2c_bus;
+       struct edid *edid;
        u16 chipset = dev->pdev->device;
        u8 sr12, sr13, sr5a;
        u8 cr3b;
@@ -1157,18 +1160,43 @@ void via_fp_probe(struct drm_device *dev)
        dev_priv->int_fp1_i2c_bus = VIA_I2C_NONE;
        dev_priv->int_fp2_i2c_bus = VIA_I2C_NONE;
 
+       /* Zero clear connector struct.
+        * Not doing so leads to a crash. */
+       memset(&connector, 0, sizeof(connector));
+
+       /* Register a connector only for I2C bus probing. */
+       drm_connector_init(dev, &connector, &via_fp_connector_funcs,
+                               DRM_MODE_CONNECTOR_LVDS);
+       drm_connector_helper_add(&connector,
+                                       &via_fp_connector_helper_funcs);
+       drm_connector_register(&connector);
+
        if ((dev_priv->int_fp1_presence)
                && (!(dev_priv->mapped_i2c_bus & VIA_I2C_BUS2))) {
-               dev_priv->int_fp1_i2c_bus = VIA_I2C_BUS2;
-               dev_priv->mapped_i2c_bus |= VIA_I2C_BUS2;
+               i2c_bus = via_find_ddc_bus(0x31);
+               edid = drm_get_edid(&connector, i2c_bus);
+               if (edid) {
+                       dev_priv->int_fp1_i2c_bus = VIA_I2C_BUS2;
+                       dev_priv->mapped_i2c_bus |= VIA_I2C_BUS2;
+                       kfree(edid);
+               }
        }
 
        if ((dev_priv->int_fp2_presence)
                && (!(dev_priv->mapped_i2c_bus & VIA_I2C_BUS2))) {
-               dev_priv->int_fp2_i2c_bus = VIA_I2C_BUS2;
-               dev_priv->mapped_i2c_bus |= VIA_I2C_BUS2;
+               i2c_bus = via_find_ddc_bus(0x31);
+               edid = drm_get_edid(&connector, i2c_bus);
+               if (edid) {
+                       dev_priv->int_fp2_i2c_bus = VIA_I2C_BUS2;
+                       dev_priv->mapped_i2c_bus |= VIA_I2C_BUS2;
+                       kfree(edid);
+               }
        }
 
+       /* Release the connector resource. */
+       drm_connector_unregister(&connector);
+       drm_connector_cleanup(&connector);
+
        DRM_DEBUG_KMS("int_fp1_presence: %x\n",
                        dev_priv->int_fp1_presence);
        DRM_DEBUG_KMS("int_fp1_di_port: 0x%08x\n",
_______________________________________________
Openchrome-devel mailing list
Openchrome-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/openchrome-devel

Reply via email to