summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2017-05-19 23:59:35 +1000
committerBen Skeggs <bskeggs@redhat.com>2017-06-16 14:04:54 +1000
commit333781045d84628417efa161d37256331abef64b (patch)
treeec4db87ef753bb0ee802c675e506fe37516068b8 /drivers/gpu/drm/nouveau
parent797b2fb81b506d4ad30aa34e5c81c0a541d398cd (diff)
downloadlinux-333781045d84628417efa161d37256331abef64b.tar.bz2
drm/nouveau/disp/g94-: port OR DP lane mapping to nvkm_ior
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h4
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sorg94.c12
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c3
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c3
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c3
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c5
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c3
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp77.c3
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp89.c3
9 files changed, 30 insertions, 9 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
index 0b5115dac4d6..f40819ead320 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
@@ -49,6 +49,10 @@ struct nvkm_ior_func {
u8 max_ac_packet, u8 rekey, u8 *avi, u8 avi_size,
u8 *vendor, u8 vendor_size);
} hdmi;
+
+ struct {
+ u8 lanes[4];
+ } dp;
};
int nvkm_ior_new_(const struct nvkm_ior_func *func, struct nvkm_disp *,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorg94.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorg94.c
index 3175bb3031b5..3bcd31adecd8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorg94.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorg94.c
@@ -44,14 +44,7 @@ g94_sor_loff(struct nvkm_output_dp *outp)
u32
g94_sor_dp_lane_map(struct nvkm_device *device, u8 lane)
{
- static const u8 gm100[] = { 0, 8, 16, 24 };
- static const u8 mcp89[] = { 24, 16, 8, 0 }; /* thanks, apple.. */
- static const u8 g94[] = { 16, 8, 0, 24 };
- if (device->chipset >= 0x110)
- return gm100[lane];
- if (device->chipset == 0xaf)
- return mcp89[lane];
- return g94[lane];
+ return nvkm_ior_find(device->disp, SOR, -1)->func->dp.lanes[lane] * 8;
}
static int
@@ -305,6 +298,9 @@ static const struct nvkm_ior_func
g94_sor = {
.state = g94_sor_state,
.power = nv50_sor_power,
+ .dp = {
+ .lanes = { 2, 1, 0, 3},
+ },
};
int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
index c3ce42e7a12e..c97c178be3dc 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
@@ -160,6 +160,9 @@ gf119_sor = {
.hdmi = {
.ctrl = gf119_hdmi_ctrl,
},
+ .dp = {
+ .lanes = { 2, 1, 0, 3 },
+ },
};
int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c
index 9f71f9438c6a..6d85a285e47b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c
@@ -28,6 +28,9 @@ gk104_sor = {
.hdmi = {
.ctrl = gk104_hdmi_ctrl,
},
+ .dp = {
+ .lanes = { 2, 1, 0, 3 },
+ },
};
int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
index acffeff59a70..bb055cd91b2f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
@@ -60,6 +60,9 @@ gm107_sor = {
.hdmi = {
.ctrl = gk104_hdmi_ctrl,
},
+ .dp = {
+ .lanes = { 0, 1, 2, 3 },
+ },
};
int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
index c8773d058073..11fed49fa9b6 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
@@ -41,7 +41,7 @@ gm200_sor_loff(struct nvkm_output_dp *outp)
static inline u32
gm200_sor_dp_lane_map(struct nvkm_device *device, u8 lane)
{
- return lane * 0x08;
+ return nvkm_ior_find(device->disp, SOR, -1)->func->dp.lanes[lane] * 8;
}
static int
@@ -137,6 +137,9 @@ gm200_sor = {
.hdmi = {
.ctrl = gk104_hdmi_ctrl,
},
+ .dp = {
+ .lanes = { 0, 1, 2, 3 },
+ },
};
int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
index 7036eeeace57..221255228e04 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgt215.c
@@ -28,6 +28,9 @@ gt215_sor = {
.hdmi = {
.ctrl = gt215_hdmi_ctrl,
},
+ .dp = {
+ .lanes = { 2, 1, 0, 3 },
+ },
};
int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp77.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp77.c
index a074a4733ca0..a771d10f253b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp77.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp77.c
@@ -28,6 +28,9 @@ mcp77_sor = {
.hdmi = {
.ctrl = g84_hdmi_ctrl,
},
+ .dp = {
+ .lanes = { 2, 1, 0, 3},
+ },
};
int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp89.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp89.c
index 56cf11ff0659..aece6bec5ecf 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp89.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sormcp89.c
@@ -28,6 +28,9 @@ mcp89_sor = {
.hdmi = {
.ctrl = gt215_hdmi_ctrl,
},
+ .dp = {
+ .lanes = { 3, 2, 1, 0 },
+ },
};
int