51 size =
max((size + 4095) & ~4095, (
u32)4096);
52 align =
max((align + 4095) & ~4095, (
u32)4096);
55 *pobject = nv_object(node);
59 ret = pfb->
ram.get(pfb, size, align, 0, 0x800, &node->
mem);
63 node->
base.addr = node->
mem->offset;
64 node->
base.size = node->
mem->size << 12;
65 node->
mem->page_shift = 12;
74 pfb->
ram.put(pfb, &node->
mem);
90 nv_wr32(priv, 0x001700, base >> 16);
93 data = nv_rd32(priv, 0x700000 + addr);
94 spin_unlock_irqrestore(&priv->
lock, flags);
104 u64 base = (node->
mem->offset +
offset) & 0xffffff00000ULL;
105 u64 addr = (node->
mem->offset +
offset) & 0x000000fffffULL;
109 nv_wr32(priv, 0x001700, base >> 16);
112 nv_wr32(priv, 0x700000 + addr, data);
113 spin_unlock_irqrestore(&priv->
lock, flags);
117 nv50_instobj_oclass = {
119 .ctor = nv50_instobj_ctor,
120 .dtor = nv50_instobj_dtor,
123 .rd32 = nv50_instobj_rd32,
124 .wr32 = nv50_instobj_wr32,
134 (
void *)(
unsigned long)align, size, pobject);
146 *pobject = nv_object(priv);
151 priv->
base.alloc = nv50_instmem_alloc;
167 .ctor = nv50_instmem_ctor,
170 .fini = nv50_instmem_fini,