Lines Matching refs:falcon
27 nvkm_falcon_load_imem(struct nvkm_falcon *falcon, void *data, u32 start, in nvkm_falcon_load_imem() argument
30 if (secure && !falcon->secret) { in nvkm_falcon_load_imem()
31 nvkm_warn(falcon->user, in nvkm_falcon_load_imem()
36 falcon->func->load_imem(falcon, data, start, size, tag, port, in nvkm_falcon_load_imem()
41 nvkm_falcon_load_dmem(struct nvkm_falcon *falcon, void *data, u32 start, in nvkm_falcon_load_dmem() argument
44 mutex_lock(&falcon->dmem_mutex); in nvkm_falcon_load_dmem()
46 falcon->func->load_dmem(falcon, data, start, size, port); in nvkm_falcon_load_dmem()
48 mutex_unlock(&falcon->dmem_mutex); in nvkm_falcon_load_dmem()
52 nvkm_falcon_read_dmem(struct nvkm_falcon *falcon, u32 start, u32 size, u8 port, in nvkm_falcon_read_dmem() argument
55 mutex_lock(&falcon->dmem_mutex); in nvkm_falcon_read_dmem()
57 falcon->func->read_dmem(falcon, start, size, port, data); in nvkm_falcon_read_dmem()
59 mutex_unlock(&falcon->dmem_mutex); in nvkm_falcon_read_dmem()
63 nvkm_falcon_bind_context(struct nvkm_falcon *falcon, struct nvkm_memory *inst) in nvkm_falcon_bind_context() argument
65 if (!falcon->func->bind_context) { in nvkm_falcon_bind_context()
66 nvkm_error(falcon->user, in nvkm_falcon_bind_context()
71 falcon->func->bind_context(falcon, inst); in nvkm_falcon_bind_context()
75 nvkm_falcon_set_start_addr(struct nvkm_falcon *falcon, u32 start_addr) in nvkm_falcon_set_start_addr() argument
77 falcon->func->set_start_addr(falcon, start_addr); in nvkm_falcon_set_start_addr()
81 nvkm_falcon_start(struct nvkm_falcon *falcon) in nvkm_falcon_start() argument
83 falcon->func->start(falcon); in nvkm_falcon_start()
87 nvkm_falcon_enable(struct nvkm_falcon *falcon) in nvkm_falcon_enable() argument
89 struct nvkm_device *device = falcon->owner->device; in nvkm_falcon_enable()
90 enum nvkm_devidx id = falcon->owner->index; in nvkm_falcon_enable()
94 ret = falcon->func->enable(falcon); in nvkm_falcon_enable()
104 nvkm_falcon_disable(struct nvkm_falcon *falcon) in nvkm_falcon_disable() argument
106 struct nvkm_device *device = falcon->owner->device; in nvkm_falcon_disable()
107 enum nvkm_devidx id = falcon->owner->index; in nvkm_falcon_disable()
113 falcon->func->disable(falcon); in nvkm_falcon_disable()
119 nvkm_falcon_reset(struct nvkm_falcon *falcon) in nvkm_falcon_reset() argument
121 nvkm_falcon_disable(falcon); in nvkm_falcon_reset()
122 return nvkm_falcon_enable(falcon); in nvkm_falcon_reset()
126 nvkm_falcon_wait_for_halt(struct nvkm_falcon *falcon, u32 ms) in nvkm_falcon_wait_for_halt() argument
128 return falcon->func->wait_for_halt(falcon, ms); in nvkm_falcon_wait_for_halt()
132 nvkm_falcon_clear_interrupt(struct nvkm_falcon *falcon, u32 mask) in nvkm_falcon_clear_interrupt() argument
134 return falcon->func->clear_interrupt(falcon, mask); in nvkm_falcon_clear_interrupt()
138 nvkm_falcon_put(struct nvkm_falcon *falcon, const struct nvkm_subdev *user) in nvkm_falcon_put() argument
140 if (unlikely(!falcon)) in nvkm_falcon_put()
143 mutex_lock(&falcon->mutex); in nvkm_falcon_put()
144 if (falcon->user == user) { in nvkm_falcon_put()
145 nvkm_debug(falcon->user, "released %s falcon\n", falcon->name); in nvkm_falcon_put()
146 falcon->user = NULL; in nvkm_falcon_put()
148 mutex_unlock(&falcon->mutex); in nvkm_falcon_put()
152 nvkm_falcon_get(struct nvkm_falcon *falcon, const struct nvkm_subdev *user) in nvkm_falcon_get() argument
154 mutex_lock(&falcon->mutex); in nvkm_falcon_get()
155 if (falcon->user) { in nvkm_falcon_get()
157 falcon->name, nvkm_subdev_name[falcon->user->index]); in nvkm_falcon_get()
158 mutex_unlock(&falcon->mutex); in nvkm_falcon_get()
162 nvkm_debug(user, "acquired %s falcon\n", falcon->name); in nvkm_falcon_get()
163 falcon->user = user; in nvkm_falcon_get()
164 mutex_unlock(&falcon->mutex); in nvkm_falcon_get()
171 struct nvkm_falcon *falcon) in nvkm_falcon_ctor() argument
176 falcon->func = func; in nvkm_falcon_ctor()
177 falcon->owner = subdev; in nvkm_falcon_ctor()
178 falcon->name = name; in nvkm_falcon_ctor()
179 falcon->addr = addr; in nvkm_falcon_ctor()
180 mutex_init(&falcon->mutex); in nvkm_falcon_ctor()
181 mutex_init(&falcon->dmem_mutex); in nvkm_falcon_ctor()
183 reg = nvkm_falcon_rd32(falcon, 0x12c); in nvkm_falcon_ctor()
184 falcon->version = reg & 0xf; in nvkm_falcon_ctor()
185 falcon->secret = (reg >> 4) & 0x3; in nvkm_falcon_ctor()
186 falcon->code.ports = (reg >> 8) & 0xf; in nvkm_falcon_ctor()
187 falcon->data.ports = (reg >> 12) & 0xf; in nvkm_falcon_ctor()
189 reg = nvkm_falcon_rd32(falcon, 0x108); in nvkm_falcon_ctor()
190 falcon->code.limit = (reg & 0x1ff) << 8; in nvkm_falcon_ctor()
191 falcon->data.limit = (reg & 0x3fe00) >> 1; in nvkm_falcon_ctor()
205 falcon->has_emem = true; in nvkm_falcon_ctor()
218 u32 val = nvkm_falcon_rd32(falcon, debug_reg); in nvkm_falcon_ctor()
219 falcon->debug = (val >> 20) & 0x1; in nvkm_falcon_ctor()