forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/drivers/gpu/drm/nouveau/dispnv04/overlay.c
....@@ -23,7 +23,6 @@
2323 * written by Arthur Huillet.
2424 */
2525
26
-#include <drm/drmP.h>
2726 #include <drm/drm_crtc.h>
2827 #include <drm/drm_fourcc.h>
2928
....@@ -32,6 +31,7 @@
3231 #include "nouveau_bo.h"
3332 #include "nouveau_connector.h"
3433 #include "nouveau_display.h"
34
+#include "nouveau_gem.h"
3535 #include "nvreg.h"
3636 #include "disp.h"
3737
....@@ -121,9 +121,9 @@
121121 struct nvif_object *dev = &drm->client.device.object;
122122 struct nouveau_plane *nv_plane =
123123 container_of(plane, struct nouveau_plane, base);
124
- struct nouveau_framebuffer *nv_fb = nouveau_framebuffer(fb);
125124 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
126125 struct nouveau_bo *cur = nv_plane->cur;
126
+ struct nouveau_bo *nvbo;
127127 bool flip = nv_plane->flip;
128128 int soff = NV_PCRTC0_SIZE * nv_crtc->index;
129129 int soff2 = NV_PCRTC0_SIZE * !nv_crtc->index;
....@@ -141,17 +141,18 @@
141141 if (ret)
142142 return ret;
143143
144
- ret = nouveau_bo_pin(nv_fb->nvbo, TTM_PL_FLAG_VRAM, false);
144
+ nvbo = nouveau_gem_object(fb->obj[0]);
145
+ ret = nouveau_bo_pin(nvbo, NOUVEAU_GEM_DOMAIN_VRAM, false);
145146 if (ret)
146147 return ret;
147148
148
- nv_plane->cur = nv_fb->nvbo;
149
+ nv_plane->cur = nvbo;
149150
150151 nvif_mask(dev, NV_PCRTC_ENGINE_CTRL + soff, NV_CRTC_FSEL_OVERLAY, NV_CRTC_FSEL_OVERLAY);
151152 nvif_mask(dev, NV_PCRTC_ENGINE_CTRL + soff2, NV_CRTC_FSEL_OVERLAY, 0);
152153
153154 nvif_wr32(dev, NV_PVIDEO_BASE(flip), 0);
154
- nvif_wr32(dev, NV_PVIDEO_OFFSET_BUFF(flip), nv_fb->nvbo->bo.offset);
155
+ nvif_wr32(dev, NV_PVIDEO_OFFSET_BUFF(flip), nvbo->offset);
155156 nvif_wr32(dev, NV_PVIDEO_SIZE_IN(flip), src_h << 16 | src_w);
156157 nvif_wr32(dev, NV_PVIDEO_POINT_IN(flip), src_y << 16 | src_x);
157158 nvif_wr32(dev, NV_PVIDEO_DS_DX(flip), (src_w << 20) / crtc_w);
....@@ -173,7 +174,7 @@
173174 if (format & NV_PVIDEO_FORMAT_PLANAR) {
174175 nvif_wr32(dev, NV_PVIDEO_UVPLANE_BASE(flip), 0);
175176 nvif_wr32(dev, NV_PVIDEO_UVPLANE_OFFSET_BUFF(flip),
176
- nv_fb->nvbo->bo.offset + fb->offsets[1]);
177
+ nvbo->offset + fb->offsets[1]);
177178 }
178179 nvif_wr32(dev, NV_PVIDEO_FORMAT(flip), format | fb->pitches[0]);
179180 nvif_wr32(dev, NV_PVIDEO_STOP, 0);
....@@ -369,8 +370,8 @@
369370 struct nvif_object *dev = &nouveau_drm(plane->dev)->client.device.object;
370371 struct nouveau_plane *nv_plane =
371372 container_of(plane, struct nouveau_plane, base);
372
- struct nouveau_framebuffer *nv_fb = nouveau_framebuffer(fb);
373373 struct nouveau_bo *cur = nv_plane->cur;
374
+ struct nouveau_bo *nvbo;
374375 uint32_t overlay = 1;
375376 int brightness = (nv_plane->brightness - 512) * 62 / 512;
376377 int ret, i;
....@@ -385,11 +386,12 @@
385386 if (ret)
386387 return ret;
387388
388
- ret = nouveau_bo_pin(nv_fb->nvbo, TTM_PL_FLAG_VRAM, false);
389
+ nvbo = nouveau_gem_object(fb->obj[0]);
390
+ ret = nouveau_bo_pin(nvbo, NOUVEAU_GEM_DOMAIN_VRAM, false);
389391 if (ret)
390392 return ret;
391393
392
- nv_plane->cur = nv_fb->nvbo;
394
+ nv_plane->cur = nvbo;
393395
394396 nvif_wr32(dev, NV_PVIDEO_OE_STATE, 0);
395397 nvif_wr32(dev, NV_PVIDEO_SU_STATE, 0);
....@@ -397,7 +399,7 @@
397399
398400 for (i = 0; i < 2; i++) {
399401 nvif_wr32(dev, NV_PVIDEO_BUFF0_START_ADDRESS + 4 * i,
400
- nv_fb->nvbo->bo.offset);
402
+ nvbo->offset);
401403 nvif_wr32(dev, NV_PVIDEO_BUFF0_PITCH_LENGTH + 4 * i,
402404 fb->pitches[0]);
403405 nvif_wr32(dev, NV_PVIDEO_BUFF0_OFFSET + 4 * i, 0);