summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Brace <kevinbrace@gmx.com>2018-05-26 22:21:29 -0700
committerKevin Brace <kevinbrace@gmx.com>2018-05-26 22:21:29 -0700
commit4678ae6d8af160f474d7e99a13db60574a477fe7 (patch)
tree2c7bbf0ab17ea64e1cdd942928da76db631c0af4
parent90d58da557c7b242627d8e093741610ca1891e49 (diff)
drm/openchrome: Add Silicon Image SiI 164 DVI transmitter support
Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
-rw-r--r--drivers/gpu/drm/openchrome/openchrome_display.h2
-rw-r--r--drivers/gpu/drm/openchrome/openchrome_tmds.c13
2 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/openchrome/openchrome_display.h b/drivers/gpu/drm/openchrome/openchrome_display.h
index 14fc4e7317f3..1240bef2f779 100644
--- a/drivers/gpu/drm/openchrome/openchrome_display.h
+++ b/drivers/gpu/drm/openchrome/openchrome_display.h
@@ -78,6 +78,8 @@
/* External TMDS (DVI) Transmitter Type */
#define VIA_TMDS_NONE 0x0
#define VIA_TMDS_VT1632 BIT(0)
+#define VIA_TMDS_SII164 BIT(1)
+
typedef struct _via_fp_info {
u32 x;
diff --git a/drivers/gpu/drm/openchrome/openchrome_tmds.c b/drivers/gpu/drm/openchrome/openchrome_tmds.c
index 2b9589bc2879..044b6a719e79 100644
--- a/drivers/gpu/drm/openchrome/openchrome_tmds.c
+++ b/drivers/gpu/drm/openchrome/openchrome_tmds.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016-2017 Kevin Brace
+ * Copyright (C) 2016-2018 Kevin Brace. All Rights Reserved.
* Copyright © 2013 James Simmons
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -537,6 +537,11 @@ void openchrome_ext_dvi_probe(struct drm_device *dev)
dev_priv->ext_tmds_i2c_bus = VIA_I2C_BUS2;
dev_priv->ext_tmds_transmitter = VIA_TMDS_VT1632;
dev_priv->mapped_i2c_bus |= VIA_I2C_BUS2;
+ } else if (openchrome_sii164_probe(i2c_bus)) {
+ dev_priv->ext_tmds_presence = true;
+ dev_priv->ext_tmds_i2c_bus = VIA_I2C_BUS2;
+ dev_priv->ext_tmds_transmitter = VIA_TMDS_SII164;
+ dev_priv->mapped_i2c_bus |= VIA_I2C_BUS2;
}
}
@@ -548,6 +553,11 @@ void openchrome_ext_dvi_probe(struct drm_device *dev)
dev_priv->ext_tmds_i2c_bus = VIA_I2C_BUS4;
dev_priv->ext_tmds_transmitter = VIA_TMDS_VT1632;
dev_priv->mapped_i2c_bus |= VIA_I2C_BUS4;
+ } else if (openchrome_sii164_probe(i2c_bus)) {
+ dev_priv->ext_tmds_presence = true;
+ dev_priv->ext_tmds_i2c_bus = VIA_I2C_BUS4;
+ dev_priv->ext_tmds_transmitter = VIA_TMDS_SII164;
+ dev_priv->mapped_i2c_bus |= VIA_I2C_BUS4;
}
}
@@ -641,6 +651,7 @@ void openchrome_ext_dvi_init(struct drm_device *dev)
DRM_DEBUG_KMS("Entered %s.\n", __func__);
openchrome_vt1632_init(dev);
+ openchrome_sii164_init(dev);
DRM_DEBUG_KMS("Exiting %s.\n", __func__);
}