mirror of https://gitee.com/openkylin/linux.git
drm/nouveau/ltc/gf100-: allocate tagram with nvkm_ram_get()
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
7f4f82af6e
commit
bd447053b3
|
@ -14,7 +14,7 @@ struct nvkm_ltc {
|
|||
|
||||
u32 num_tags;
|
||||
u32 tag_base;
|
||||
struct nvkm_mm_node *tag_ram;
|
||||
struct nvkm_memory *tag_ram;
|
||||
|
||||
int zbc_min;
|
||||
int zbc_max;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <core/memory.h>
|
||||
#include <subdev/fb.h>
|
||||
|
||||
int
|
||||
|
@ -119,9 +120,7 @@ static void *
|
|||
nvkm_ltc_dtor(struct nvkm_subdev *subdev)
|
||||
{
|
||||
struct nvkm_ltc *ltc = nvkm_ltc(subdev);
|
||||
struct nvkm_ram *ram = ltc->subdev.device->fb->ram;
|
||||
if (ram)
|
||||
nvkm_mm_free(&ram->vram, <c->tag_ram);
|
||||
nvkm_memory_unref(<c->tag_ram);
|
||||
return ltc;
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <core/memory.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/timer.h>
|
||||
|
||||
|
@ -152,7 +153,8 @@ gf100_ltc_flush(struct nvkm_ltc *ltc)
|
|||
int
|
||||
gf100_ltc_oneinit_tag_ram(struct nvkm_ltc *ltc)
|
||||
{
|
||||
struct nvkm_fb *fb = ltc->subdev.device->fb;
|
||||
struct nvkm_device *device = ltc->subdev.device;
|
||||
struct nvkm_fb *fb = device->fb;
|
||||
struct nvkm_ram *ram = fb->ram;
|
||||
u32 tag_size, tag_margin, tag_align;
|
||||
int ret;
|
||||
|
@ -182,14 +184,13 @@ gf100_ltc_oneinit_tag_ram(struct nvkm_ltc *ltc)
|
|||
*/
|
||||
tag_size = (ltc->num_tags / 64) * 0x6000 + tag_margin;
|
||||
tag_size += tag_align;
|
||||
tag_size = (tag_size + 0xfff) >> 12; /* round up */
|
||||
|
||||
ret = nvkm_mm_tail(&ram->vram, NVKM_RAM_MM_NORMAL, 1, tag_size,
|
||||
tag_size, 1, <c->tag_ram);
|
||||
ret = nvkm_ram_get(device, NVKM_RAM_MM_NORMAL, 0x01, 12, tag_size,
|
||||
true, true, <c->tag_ram);
|
||||
if (ret) {
|
||||
ltc->num_tags = 0;
|
||||
} else {
|
||||
u64 tag_base = ((u64)ltc->tag_ram->offset << 12) + tag_margin;
|
||||
u64 tag_base = nvkm_memory_addr(ltc->tag_ram) + tag_margin;
|
||||
|
||||
tag_base += tag_align - 1;
|
||||
do_div(tag_base, tag_align);
|
||||
|
|
Loading…
Reference in New Issue