Commit 7434a255 authored by Thomas Richter's avatar Thomas Richter Committed by Daniel Vetter

drm/i915: Support for ns2501-DVO

This patch adds support for the ns2501 DVO, found in some older Fujitsu/Siemens Labtops.
It is in the state of "works for me".
Includes now proper DPMS support. Includes switching between resolutions -
from 640x480 to 1024x768.
Currently assumes that the native display resolution is 1024x768.

The ns2501 seems to be rather critical - if the output PLL is not
running, the chip doesn't seem to be clocked and then doesn't react
on i2c messages. Thus, a quick'n-dirty trick ensures that the DVO
is active before submitting any i2c messages to it. This is
probably to be reviewed.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=17902Signed-off-by: default avatarThomas Richter <thor@math.tu-berlin.de>
[danvet: fixup whitespace fail.]
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent ab9d7c30
...@@ -40,6 +40,7 @@ i915-y := i915_drv.o i915_dma.o i915_irq.o \ ...@@ -40,6 +40,7 @@ i915-y := i915_drv.o i915_dma.o i915_irq.o \
dvo_ivch.o \ dvo_ivch.o \
dvo_tfp410.o \ dvo_tfp410.o \
dvo_sil164.o \ dvo_sil164.o \
dvo_ns2501.o \
i915_gem_dmabuf.o i915_gem_dmabuf.o
i915-$(CONFIG_COMPAT) += i915_ioc32.o i915-$(CONFIG_COMPAT) += i915_ioc32.o
......
...@@ -140,5 +140,6 @@ extern struct intel_dvo_dev_ops ch7xxx_ops; ...@@ -140,5 +140,6 @@ extern struct intel_dvo_dev_ops ch7xxx_ops;
extern struct intel_dvo_dev_ops ivch_ops; extern struct intel_dvo_dev_ops ivch_ops;
extern struct intel_dvo_dev_ops tfp410_ops; extern struct intel_dvo_dev_ops tfp410_ops;
extern struct intel_dvo_dev_ops ch7017_ops; extern struct intel_dvo_dev_ops ch7017_ops;
extern struct intel_dvo_dev_ops ns2501_ops;
#endif /* _INTEL_DVO_H */ #endif /* _INTEL_DVO_H */
This diff is collapsed.
...@@ -1428,8 +1428,10 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv, ...@@ -1428,8 +1428,10 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
* protect mechanism may be enabled. * protect mechanism may be enabled.
* *
* Note! This is for pre-ILK only. * Note! This is for pre-ILK only.
*
* Unfortunately needed by dvo_ns2501 since the dvo depends on it running.
*/ */
static void intel_enable_pll(struct drm_i915_private *dev_priv, enum pipe pipe) void intel_enable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
{ {
int reg; int reg;
u32 val; u32 val;
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#define SIL164_ADDR 0x38 #define SIL164_ADDR 0x38
#define CH7xxx_ADDR 0x76 #define CH7xxx_ADDR 0x76
#define TFP410_ADDR 0x38 #define TFP410_ADDR 0x38
#define NS2501_ADDR 0x38
static const struct intel_dvo_device intel_dvo_devices[] = { static const struct intel_dvo_device intel_dvo_devices[] = {
{ {
...@@ -74,6 +75,13 @@ static const struct intel_dvo_device intel_dvo_devices[] = { ...@@ -74,6 +75,13 @@ static const struct intel_dvo_device intel_dvo_devices[] = {
.slave_addr = 0x75, .slave_addr = 0x75,
.gpio = GMBUS_PORT_DPB, .gpio = GMBUS_PORT_DPB,
.dev_ops = &ch7017_ops, .dev_ops = &ch7017_ops,
},
{
.type = INTEL_DVO_CHIP_TMDS,
.name = "ns2501",
.dvo_reg = DVOC,
.slave_addr = NS2501_ADDR,
.dev_ops = &ns2501_ops,
} }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment