[Openchrome-devel] drm-openchrome: Branch 'drm-next-4.13' - 3 commits - drivers/gpu/drm

Kevin Brace kevinbrace at kemper.freedesktop.org
Wed Oct 4 03:56:55 UTC 2017


 drivers/gpu/drm/openchrome/via_display.c |    2 -
 drivers/gpu/drm/openchrome/via_drv.h     |    4 +--
 drivers/gpu/drm/openchrome/via_i2c.c     |   36 ++++++++++++++++---------------
 3 files changed, 21 insertions(+), 21 deletions(-)

New commits:
commit c757cfe3a917447680e87e8390a88564e5f239f0
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Oct 3 20:56:02 2017 -0700

    Version bumped to 3.0.47
    
    Improvement made in making sure hardware based I2C buses are always
    enabled.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_drv.h b/drivers/gpu/drm/openchrome/via_drv.h
index 5279a281be24..494620d77780 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         "20171001"
+#define DRIVER_DATE         "20171003"
 
 #define DRIVER_MAJOR		3
 #define DRIVER_MINOR		0
-#define DRIVER_PATCHLEVEL	46
+#define DRIVER_PATCHLEVEL	47
 
 #include <linux/module.h>
 
commit c4a278f1ba767ac613e9e959be4b4a3a329b2a13
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Oct 3 20:50:12 2017 -0700

    Rearranging code inside via_i2c.c
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_i2c.c b/drivers/gpu/drm/openchrome/via_i2c.c
index 742362570028..15361edc5be8 100644
--- a/drivers/gpu/drm/openchrome/via_i2c.c
+++ b/drivers/gpu/drm/openchrome/via_i2c.c
@@ -26,7 +26,7 @@ enum viafb_i2c_adap;
 
 static struct via_i2c_stuff via_i2c_par[5];
 
-static void via_i2c_setscl(void *data, int state)
+static void via_i2c_setsda(void *data, int state)
 {
 	struct via_i2c_stuff *i2c = data;
 	struct drm_device *dev = i2c_get_adapdata(&i2c->adapter);
@@ -34,23 +34,32 @@ static void via_i2c_setscl(void *data, int state)
 	u8 value, mask;
 
 	if (i2c->is_active == GPIO) {
-		mask = state ? BIT(7) : BIT(7) | BIT(5);
-		value = state ? 0x00 : BIT(7);
+		mask = state ? BIT(6) : BIT(6) | BIT(4);
+		value = state ? 0x00 : BIT(6);
 	} else {
-		value = state ? BIT(5) | BIT(0) : BIT(0);
-		mask = BIT(5) | BIT(0);
+		value = state ? BIT(4) | BIT(0) : BIT(0);
+		mask = BIT(4) | BIT(0);
 	}
 
 	svga_wseq_mask(VGABASE, i2c->i2c_port, value, mask);
 }
 
-static int via_i2c_getscl(void *data)
+static void via_i2c_setscl(void *data, int state)
 {
 	struct via_i2c_stuff *i2c = data;
 	struct drm_device *dev = i2c_get_adapdata(&i2c->adapter);
 	struct via_device *dev_priv = dev->dev_private;
+	u8 value, mask;
 
-	return vga_rseq(VGABASE, i2c->i2c_port) & BIT(3);
+	if (i2c->is_active == GPIO) {
+		mask = state ? BIT(7) : BIT(7) | BIT(5);
+		value = state ? 0x00 : BIT(7);
+	} else {
+		value = state ? BIT(5) | BIT(0) : BIT(0);
+		mask = BIT(5) | BIT(0);
+	}
+
+	svga_wseq_mask(VGABASE, i2c->i2c_port, value, mask);
 }
 
 static int via_i2c_getsda(void *data)
@@ -62,22 +71,13 @@ static int via_i2c_getsda(void *data)
 	return vga_rseq(VGABASE, i2c->i2c_port) & BIT(2);
 }
 
-static void via_i2c_setsda(void *data, int state)
+static int via_i2c_getscl(void *data)
 {
 	struct via_i2c_stuff *i2c = data;
 	struct drm_device *dev = i2c_get_adapdata(&i2c->adapter);
 	struct via_device *dev_priv = dev->dev_private;
-	u8 value, mask;
-
-	if (i2c->is_active == GPIO) {
-		mask = state ? BIT(6) : BIT(6) | BIT(4);
-		value = state ? 0x00 : BIT(6);
-	} else {
-		value = state ? BIT(4) | BIT(0) : BIT(0);
-		mask = BIT(4) | BIT(0);
-	}
 
-	svga_wseq_mask(VGABASE, i2c->i2c_port, value, mask);
+	return vga_rseq(VGABASE, i2c->i2c_port) & BIT(3);
 }
 
 struct i2c_adapter *via_find_ddc_bus(int port)
commit 2184b93f3636dc35a564d9830eb74b4e0af5bc18
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Oct 3 20:39:49 2017 -0700

    Always enable hardware based I2C ports when sending data
    
    Due to an overlook by the past developer, hardware based I2C buses
    (3C5.26 and 3C5.31) were only enabled once in the code (i.e., when
    the DRM is initialized). This does not work out well when standby
    resume support is taken into consideration since register bits that
    enable hardware based I2C buses are undefined after standby resume.
    The easiest way to solve this problem is to always enable it whenever
    data is being sent.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_display.c b/drivers/gpu/drm/openchrome/via_display.c
index f94b3b6f21b3..6fd9d2308dd8 100644
--- a/drivers/gpu/drm/openchrome/via_display.c
+++ b/drivers/gpu/drm/openchrome/via_display.c
@@ -384,9 +384,7 @@ via_init_td_timing_regs(struct drm_device *dev)
 static void
 via_i2c_reg_init(struct via_device *dev_priv)
 {
-	vga_wseq(VGABASE, 0x31, 0x01);
 	svga_wseq_mask(VGABASE, 0x31, 0x30, 0x30);
-	vga_wseq(VGABASE, 0x26, 0x01);
 	svga_wseq_mask(VGABASE, 0x26, 0x30, 0x30);
 	vga_wseq(VGABASE, 0x2C, 0xc2);
 	vga_wseq(VGABASE, 0x3D, 0xc0);
diff --git a/drivers/gpu/drm/openchrome/via_i2c.c b/drivers/gpu/drm/openchrome/via_i2c.c
index 96114f40b037..742362570028 100644
--- a/drivers/gpu/drm/openchrome/via_i2c.c
+++ b/drivers/gpu/drm/openchrome/via_i2c.c
@@ -37,9 +37,10 @@ static void via_i2c_setscl(void *data, int state)
 		mask = state ? BIT(7) : BIT(7) | BIT(5);
 		value = state ? 0x00 : BIT(7);
 	} else {
-		value = state ? BIT(5) : 0x00;
-		mask = BIT(5);
+		value = state ? BIT(5) | BIT(0) : BIT(0);
+		mask = BIT(5) | BIT(0);
 	}
+
 	svga_wseq_mask(VGABASE, i2c->i2c_port, value, mask);
 }
 
@@ -72,9 +73,10 @@ static void via_i2c_setsda(void *data, int state)
 		mask = state ? BIT(6) : BIT(6) | BIT(4);
 		value = state ? 0x00 : BIT(6);
 	} else {
-		value = state ? BIT(4) : 0x00;
-		mask = BIT(4);
+		value = state ? BIT(4) | BIT(0) : BIT(0);
+		mask = BIT(4) | BIT(0);
 	}
+
 	svga_wseq_mask(VGABASE, i2c->i2c_port, value, mask);
 }
 


More information about the Openchrome-devel mailing list