Lines Matching refs:ramht

27 #include <core/ramht.h>
32 nvkm_ramht_hash(struct nvkm_ramht *ramht, int chid, u32 handle)
37 hash ^= (handle & ((1 << ramht->bits) - 1));
38 handle >>= ramht->bits;
41 hash ^= chid << (ramht->bits - 4);
46 nvkm_ramht_search(struct nvkm_ramht *ramht, int chid, u32 handle)
50 co = ho = nvkm_ramht_hash(ramht, chid, handle);
52 if (ramht->data[co].chid == chid) {
53 if (ramht->data[co].handle == handle)
54 return ramht->data[co].inst;
57 if (++co >= ramht->size)
65 nvkm_ramht_update(struct nvkm_ramht *ramht, int co, struct nvkm_object *object,
68 struct nvkm_ramht_data *data = &ramht->data[co];
69 u64 inst = 0x00000040; /* just non-zero for <=g8x fifo ramht */
77 ret = nvkm_object_bind(object, ramht->parent, 16, &data->inst);
87 if (ramht->device->card_type >= NV_50)
97 nvkm_kmap(ramht->gpuobj);
98 nvkm_wo32(ramht->gpuobj, (co << 3) + 0, handle);
99 nvkm_wo32(ramht->gpuobj, (co << 3) + 4, context);
100 nvkm_done(ramht->gpuobj);
105 nvkm_ramht_remove(struct nvkm_ramht *ramht, int cookie)
108 nvkm_ramht_update(ramht, cookie, NULL, -1, 0, 0, 0);
112 nvkm_ramht_insert(struct nvkm_ramht *ramht, struct nvkm_object *object,
117 if (nvkm_ramht_search(ramht, chid, handle))
120 co = ho = nvkm_ramht_hash(ramht, chid, handle);
122 if (ramht->data[co].chid < 0) {
123 return nvkm_ramht_update(ramht, co, object, chid,
127 if (++co >= ramht->size)
137 struct nvkm_ramht *ramht = *pramht;
138 if (ramht) {
139 nvkm_gpuobj_del(&ramht->gpuobj);
149 struct nvkm_ramht *ramht;
152 if (!(ramht = *pramht = vzalloc(struct_size(ramht, data, (size >> 3)))))
155 ramht->device = device;
156 ramht->parent = parent;
157 ramht->size = size >> 3;
158 ramht->bits = order_base_2(ramht->size);
159 for (i = 0; i < ramht->size; i++)
160 ramht->data[i].chid = -1;
162 ret = nvkm_gpuobj_new(ramht->device, size, align, true,
163 ramht->parent, &ramht->gpuobj);