drm/nouveau/kms/nv50-: use NVIDIA's headers for core head_procamp()
authorBen Skeggs <bskeggs@redhat.com>
Sun, 21 Jun 2020 02:40:59 +0000 (12:40 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 24 Jul 2020 08:51:03 +0000 (18:51 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/dispnv50/head507d.c
drivers/gpu/drm/nouveau/dispnv50/head907d.c
drivers/gpu/drm/nouveau/dispnv50/headc37d.c
drivers/gpu/drm/nouveau/dispnv50/headc57d.c

index be9b9fa27dd043c6811a3d3024140943c56728aa..0edd4e520c8e35134e47d37f60e35966a80d73bb 100644 (file)
@@ -36,8 +36,12 @@ head507d_procamp(struct nv50_head *head, struct nv50_head_atom *asyh)
        if ((ret = PUSH_WAIT(push, 2)))
                return ret;
 
-       PUSH_NVSQ(push, NV507D, 0x08a8 + (i * 0x400), asyh->procamp.sat.sin << 20 |
-                                                     asyh->procamp.sat.cos << 8);
+       PUSH_MTHD(push, NV507D, HEAD_SET_PROCAMP(i),
+                 NVDEF(NV507D, HEAD_SET_PROCAMP, COLOR_SPACE, RGB) |
+                 NVDEF(NV507D, HEAD_SET_PROCAMP, CHROMA_LPF, AUTO) |
+                 NVVAL(NV507D, HEAD_SET_PROCAMP, SAT_COS, asyh->procamp.sat.cos) |
+                 NVVAL(NV507D, HEAD_SET_PROCAMP, SAT_SINE, asyh->procamp.sat.sin) |
+                 NVDEF(NV507D, HEAD_SET_PROCAMP, TRANSITION, HARD));
        return 0;
 }
 
index f595cc7c514bf20649bb400bc72f7402ce2706ae..74f7901e953a0f07079c8567c8d3481891265f2a 100644 (file)
@@ -63,8 +63,13 @@ head907d_procamp(struct nv50_head *head, struct nv50_head_atom *asyh)
        if ((ret = PUSH_WAIT(push, 2)))
                return ret;
 
-       PUSH_NVSQ(push, NV907D, 0x0498 + (i * 0x300), asyh->procamp.sat.sin << 20 |
-                                                     asyh->procamp.sat.cos << 8);
+       PUSH_MTHD(push, NV907D, HEAD_SET_PROCAMP(i),
+                 NVDEF(NV907D, HEAD_SET_PROCAMP, COLOR_SPACE, RGB) |
+                 NVDEF(NV907D, HEAD_SET_PROCAMP, CHROMA_LPF, AUTO) |
+                 NVVAL(NV907D, HEAD_SET_PROCAMP, SAT_COS, asyh->procamp.sat.cos) |
+                 NVVAL(NV907D, HEAD_SET_PROCAMP, SAT_SINE, asyh->procamp.sat.sin) |
+                 NVDEF(NV907D, HEAD_SET_PROCAMP, DYNAMIC_RANGE, VESA) |
+                 NVDEF(NV907D, HEAD_SET_PROCAMP, RANGE_COMPRESSION, DISABLE));
        return 0;
 }
 
index 172773b6f41ba2534bfed04250a670fa48850676..ba2dc5a64a693e7ff820c8ab910159e977532a4c 100644 (file)
@@ -69,9 +69,14 @@ headc37d_procamp(struct nv50_head *head, struct nv50_head_atom *asyh)
        if ((ret = PUSH_WAIT(push, 2)))
                return ret;
 
-       PUSH_NVSQ(push, NVC37D, 0x2000 + (i * 0x400), 0x80000000 |
-                                                     asyh->procamp.sat.sin << 16 |
-                                                     asyh->procamp.sat.cos << 4);
+       PUSH_MTHD(push, NVC37D, HEAD_SET_PROCAMP(i),
+                 NVDEF(NVC37D, HEAD_SET_PROCAMP, COLOR_SPACE, RGB) |
+                 NVDEF(NVC37D, HEAD_SET_PROCAMP, CHROMA_LPF, DISABLE) |
+                 NVVAL(NVC37D, HEAD_SET_PROCAMP, SAT_COS, asyh->procamp.sat.cos) |
+                 NVVAL(NVC37D, HEAD_SET_PROCAMP, SAT_SINE, asyh->procamp.sat.sin) |
+                 NVDEF(NVC37D, HEAD_SET_PROCAMP, DYNAMIC_RANGE, VESA) |
+                 NVDEF(NVC37D, HEAD_SET_PROCAMP, RANGE_COMPRESSION, DISABLE) |
+                 NVDEF(NVC37D, HEAD_SET_PROCAMP, BLACK_LEVEL, GRAPHICS));
        return 0;
 }
 
index 3c0001cd0a6a68726b22c7508ff3c1f15d618c73..24c1cd2247c14718baf5743975d811b606e60ca5 100644 (file)
@@ -71,7 +71,10 @@ headc57d_procamp(struct nv50_head *head, struct nv50_head_atom *asyh)
                return ret;
 
        //TODO:
-       PUSH_NVSQ(push, NVC57D, 0x2000 + (i * 0x400), 0x00000000);
+       PUSH_MTHD(push, NVC57D, HEAD_SET_PROCAMP(i),
+                 NVDEF(NVC57D, HEAD_SET_PROCAMP, COLOR_SPACE, RGB) |
+                 NVDEF(NVC57D, HEAD_SET_PROCAMP, CHROMA_LPF, DISABLE) |
+                 NVDEF(NVC57D, HEAD_SET_PROCAMP, DYNAMIC_RANGE, VESA));
        return 0;
 }