[Openchrome-devel] drm-openchrome: 6 commits - drivers/gpu/drm
Kevin Brace
kevinbrace at kemper.freedesktop.org
Sat Apr 15 22:17:18 UTC 2017
drivers/gpu/drm/via/crtc_hw.h | 37 +++++++++++++++++++++++
drivers/gpu/drm/via/via_drv.h | 4 +-
drivers/gpu/drm/via/via_tmds.c | 65 ++++++++++++++++++++++++++++++++++++++++-
3 files changed, 103 insertions(+), 3 deletions(-)
New commits:
commit 4e40895ddc19e115ae4c3bb630f02efaf147706d
Author: Kevin Brace <kevinbrace at gmx.com>
Date: Sat Apr 15 14:44:43 2017 -0700
Version bumped to 3.0.31
This version creates a dedicated mode setting callback function for
CX700 / VX700 and VX800 chipsets’ integrated TMDS transmitter.
Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h
index 0f258bfe7a1..b5adab14dd6 100644
--- a/drivers/gpu/drm/via/via_drv.h
+++ b/drivers/gpu/drm/via/via_drv.h
@@ -30,11 +30,11 @@
#define DRIVER_AUTHOR "The OpenChrome Project"
#define DRIVER_NAME "via"
#define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome IGP"
-#define DRIVER_DATE "20170411"
+#define DRIVER_DATE "20170415"
#define DRIVER_MAJOR 3
#define DRIVER_MINOR 0
-#define DRIVER_PATCHLEVEL 30
+#define DRIVER_PATCHLEVEL 31
#include <linux/module.h>
commit b8d0836d992a49cf5040e24857277d81db928836
Author: Kevin Brace <kevinbrace at gmx.com>
Date: Sat Apr 15 14:40:59 2017 -0700
Added via_tmds_mode_set
This function was added to via_tmds.c. This function improves the mode
setting behavior of CX700 / VX700 and VX800 chipsets’ integrated TMDS
transmitter.
Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
diff --git a/drivers/gpu/drm/via/via_tmds.c b/drivers/gpu/drm/via/via_tmds.c
index 72b82e3f20b..aff4c6be054 100644
--- a/drivers/gpu/drm/via/via_tmds.c
+++ b/drivers/gpu/drm/via/via_tmds.c
@@ -145,10 +145,29 @@ via_tmds_mode_fixup(struct drm_encoder *encoder,
return true;
}
+/*
+ * Handle CX700 / VX700 and VX800 integrated TMDS (DVI) mode setting.
+ */
+static void
+via_tmds_mode_set(struct drm_encoder *encoder,
+ struct drm_display_mode *mode,
+ struct drm_display_mode *adjusted_mode)
+{
+ struct via_device *dev_priv = encoder->dev->dev_private;
+ struct via_crtc *iga = container_of(encoder->crtc, struct via_crtc, base);
+
+ DRM_DEBUG_KMS("Entered via_tmds_mode_set.\n");
+
+ viaTMDSSyncPolarity(dev_priv, adjusted_mode->flags);
+ viaTMDSDisplaySource(dev_priv, iga->index);
+
+ DRM_DEBUG_KMS("Exiting via_tmds_mode_set.\n");
+}
+
static const struct drm_encoder_helper_funcs via_tmds_enc_helper_funcs = {
.dpms = via_tmds_dpms,
.mode_fixup = via_tmds_mode_fixup,
- .mode_set = via_set_sync_polarity,
+ .mode_set = via_tmds_mode_set,
.prepare = via_encoder_prepare,
.commit = via_encoder_commit,
.disable = via_encoder_disable,
commit fe1ae610b4e6a720116cab51a7ebbf8d54df4a08
Author: Kevin Brace <kevinbrace at gmx.com>
Date: Sat Apr 15 14:36:32 2017 -0700
Added viaTMDSDisplaySource
This function was added to via_tmds.c.
Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
diff --git a/drivers/gpu/drm/via/via_tmds.c b/drivers/gpu/drm/via/via_tmds.c
index 9e53859b7be..72b82e3f20b 100644
--- a/drivers/gpu/drm/via/via_tmds.c
+++ b/drivers/gpu/drm/via/via_tmds.c
@@ -84,6 +84,23 @@ viaTMDSSyncPolarity(struct via_device *dev_priv, unsigned int flags)
}
/*
+ * Sets TMDS (DVI) display source.
+ */
+static void
+viaTMDSDisplaySource(struct via_device *dev_priv, int index)
+{
+ u8 displaySource = index;
+
+ DRM_DEBUG_KMS("Entered viaTMDSDisplaySource.\n");
+
+ viaTMDSSetDisplaySource(VGABASE, displaySource & 0x01);
+ DRM_INFO("TMDS (DVI) Display Source: IGA%d\n",
+ (displaySource & 0x01) + 1);
+
+ DRM_DEBUG_KMS("Exiting viaTMDSDisplaySource.\n");
+}
+
+/*
* Routines for controlling stuff on the TMDS port
*/
static const struct drm_encoder_funcs via_tmds_enc_funcs = {
commit f99e42538381eaa2fbe67c302e39f785996c4218
Author: Kevin Brace <kevinbrace at gmx.com>
Date: Sat Apr 15 14:32:34 2017 -0700
Added viaTMDSSyncPolarity
This function was added to via_tmds.c.
Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
diff --git a/drivers/gpu/drm/via/via_tmds.c b/drivers/gpu/drm/via/via_tmds.c
index d5f244acb7b..9e53859b7be 100644
--- a/drivers/gpu/drm/via/via_tmds.c
+++ b/drivers/gpu/drm/via/via_tmds.c
@@ -57,6 +57,33 @@ viaTMDSPower(struct via_device *dev_priv,
}
/*
+ * Set TMDS (DVI) sync polarity.
+ */
+static void
+viaTMDSSyncPolarity(struct via_device *dev_priv, unsigned int flags)
+{
+ u8 syncPolarity = 0x00;
+
+ DRM_DEBUG_KMS("Entered viaTMDSSyncPolarity.\n");
+
+ if (flags & DRM_MODE_FLAG_NHSYNC) {
+ syncPolarity |= BIT(0);
+ }
+
+ if (flags & DRM_MODE_FLAG_NVSYNC) {
+ syncPolarity |= BIT(1);
+ }
+
+ viaTMDSSetSyncPolarity(VGABASE, syncPolarity);
+ DRM_INFO("TMDS (DVI) Horizontal Sync Polarity: %s\n",
+ (syncPolarity & BIT(0)) ? "-" : "+");
+ DRM_INFO("TMDS (DVI) Vertical Sync Polarity: %s\n",
+ (syncPolarity & BIT(1)) ? "-" : "+");
+
+ DRM_DEBUG_KMS("Exiting viaTMDSSyncPolarity.\n");
+}
+
+/*
* Routines for controlling stuff on the TMDS port
*/
static const struct drm_encoder_funcs via_tmds_enc_funcs = {
commit 45710b40110c552f223bf86cf4080de3bae5af37
Author: Kevin Brace <kevinbrace at gmx.com>
Date: Sat Apr 15 14:20:32 2017 -0700
Added viaTMDSSetDisplaySource
This inline function was added to crtc_hw.h.
Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
diff --git a/drivers/gpu/drm/via/crtc_hw.h b/drivers/gpu/drm/via/crtc_hw.h
index 8c3eb0b2665..4e8c8bd70e0 100644
--- a/drivers/gpu/drm/via/crtc_hw.h
+++ b/drivers/gpu/drm/via/crtc_hw.h
@@ -234,6 +234,23 @@ viaTMDSSetSyncPolarity(void __iomem *regs, u8 syncPolarity)
(syncPolarity & BIT(1)) ? "-" : "+");
}
+/*
+ * Sets TMDS (DVI) display source.
+ */
+static inline void
+viaTMDSSetDisplaySource(void __iomem *regs, u8 displaySource)
+{
+ /* Set TMDS (DVI) display source.
+ * The integrated TMDS transmitter appears to utilize LVDS1's
+ * data source selection bit (3X5.99[4]). */
+ /* 3X5.99[4] - LVDS Channel1 Data Source Selection
+ * 0: Primary Display
+ * 1: Secondary Display */
+ svga_wcrt_mask(regs, 0x99, displaySource << 4, BIT(4));
+ DRM_DEBUG_KMS("TMDS (DVI) Display Source: IGA%d\n",
+ (displaySource & 0x01) + 1);
+}
+
extern void load_register_tables(void __iomem *regbase, struct vga_registers *regs);
extern void load_value_to_registers(void __iomem *regbase, struct vga_registers *regs,
commit 339e8ab59077b38e259c3859ba47245ffbfdc781
Author: Kevin Brace <kevinbrace at gmx.com>
Date: Sat Apr 15 14:04:01 2017 -0700
Added viaTMDSSetSyncPolarity
This inline function was added to crtc_hw.h.
Signed-off-by: Kevin Brace <kevinbrace at gmx.com>
diff --git a/drivers/gpu/drm/via/crtc_hw.h b/drivers/gpu/drm/via/crtc_hw.h
index 07a7cd9dac3..8c3eb0b2665 100644
--- a/drivers/gpu/drm/via/crtc_hw.h
+++ b/drivers/gpu/drm/via/crtc_hw.h
@@ -214,6 +214,26 @@ viaTMDSSetPower(void __iomem *regs, bool powerState)
powerState ? "On" : "Off");
}
+/*
+ * Sets CX700 / VX700 and VX800 chipsets' TMDS (DVI) sync polarity.
+ */
+static inline void
+viaTMDSSetSyncPolarity(void __iomem *regs, u8 syncPolarity)
+{
+ /* Set TMDS (DVI) sync polarity. */
+ /* 3X5.97[6] - DVI (TMDS) VSYNC Polarity
+ * 0: Positive
+ * 1: Negative
+ * 3X5.97[5] - DVI (TMDS) HSYNC Polarity
+ * 0: Positive
+ * 1: Negative */
+ svga_wcrt_mask(regs, 0x97, syncPolarity << 5, BIT(6) | BIT(5));
+ DRM_DEBUG_KMS("TMDS (DVI) Horizontal Sync Polarity: %s\n",
+ (syncPolarity & BIT(0)) ? "-" : "+");
+ DRM_DEBUG_KMS("TMDS (DVI) Vertical Sync Polarity: %s\n",
+ (syncPolarity & BIT(1)) ? "-" : "+");
+}
+
extern void load_register_tables(void __iomem *regbase, struct vga_registers *regs);
extern void load_value_to_registers(void __iomem *regbase, struct vga_registers *regs,
More information about the Openchrome-devel
mailing list