mirror of
https://github.com/torvalds/linux.git
synced 2024-12-16 08:02:17 +00:00
drm/nouveau: move DP script invocation to nouveau_dp.c
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
87c0e0e513
commit
ea4718d1dc
@ -271,12 +271,26 @@ nouveau_dp_link_train(struct drm_encoder *encoder)
|
||||
{
|
||||
struct drm_device *dev = encoder->dev;
|
||||
struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
|
||||
uint8_t config[4];
|
||||
uint8_t status[3];
|
||||
struct bit_displayport_encoder_table *dpe;
|
||||
int dpe_headerlen;
|
||||
uint8_t config[4], status[3];
|
||||
bool cr_done, cr_max_vs, eq_done;
|
||||
int ret = 0, i, tries, voltage;
|
||||
|
||||
NV_DEBUG_KMS(dev, "link training!!\n");
|
||||
|
||||
dpe = nouveau_bios_dp_table(dev, nv_encoder->dcb, &dpe_headerlen);
|
||||
if (!dpe) {
|
||||
NV_ERROR(dev, "SOR-%d: no DP encoder table!\n", nv_encoder->or);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (dpe->script0) {
|
||||
NV_DEBUG_KMS(dev, "SOR-%d: running DP script 0\n", nv_encoder->or);
|
||||
nouveau_bios_run_init_table(dev, le16_to_cpu(dpe->script0),
|
||||
nv_encoder->dcb);
|
||||
}
|
||||
|
||||
train:
|
||||
cr_done = eq_done = false;
|
||||
|
||||
@ -403,6 +417,12 @@ stop:
|
||||
}
|
||||
}
|
||||
|
||||
if (dpe->script1) {
|
||||
NV_DEBUG_KMS(dev, "SOR-%d: running DP script 1\n", nv_encoder->or);
|
||||
nouveau_bios_run_init_table(dev, le16_to_cpu(dpe->script1),
|
||||
nv_encoder->dcb);
|
||||
}
|
||||
|
||||
return eq_done;
|
||||
}
|
||||
|
||||
|
@ -65,36 +65,6 @@ nv50_sor_disconnect(struct drm_encoder *encoder)
|
||||
nv_encoder->last_dpms = DRM_MODE_DPMS_OFF;
|
||||
}
|
||||
|
||||
static void
|
||||
nv50_sor_dp_link_train(struct drm_encoder *encoder)
|
||||
{
|
||||
struct drm_device *dev = encoder->dev;
|
||||
struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
|
||||
struct bit_displayport_encoder_table *dpe;
|
||||
int dpe_headerlen;
|
||||
|
||||
dpe = nouveau_bios_dp_table(dev, nv_encoder->dcb, &dpe_headerlen);
|
||||
if (!dpe) {
|
||||
NV_ERROR(dev, "SOR-%d: no DP encoder table!\n", nv_encoder->or);
|
||||
return;
|
||||
}
|
||||
|
||||
if (dpe->script0) {
|
||||
NV_DEBUG_KMS(dev, "SOR-%d: running DP script 0\n", nv_encoder->or);
|
||||
nouveau_bios_run_init_table(dev, le16_to_cpu(dpe->script0),
|
||||
nv_encoder->dcb);
|
||||
}
|
||||
|
||||
if (!nouveau_dp_link_train(encoder))
|
||||
NV_ERROR(dev, "SOR-%d: link training failed\n", nv_encoder->or);
|
||||
|
||||
if (dpe->script1) {
|
||||
NV_DEBUG_KMS(dev, "SOR-%d: running DP script 1\n", nv_encoder->or);
|
||||
nouveau_bios_run_init_table(dev, le16_to_cpu(dpe->script1),
|
||||
nv_encoder->dcb);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
nv50_sor_dpms(struct drm_encoder *encoder, int mode)
|
||||
{
|
||||
@ -146,7 +116,7 @@ nv50_sor_dpms(struct drm_encoder *encoder, int mode)
|
||||
}
|
||||
|
||||
if (nv_encoder->dcb->type == OUTPUT_DP && mode == DRM_MODE_DPMS_ON)
|
||||
nv50_sor_dp_link_train(encoder);
|
||||
nouveau_dp_link_train(encoder);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user