Lines Matching refs:fw

47 	const struct firmware *fw;
50 ret = nvkm_firmware_load_name(subdev, base, name, ver, &fw);
52 blob->data = kmemdup(fw->data, fw->size, GFP_KERNEL);
53 blob->size = fw->size;
54 nvkm_firmware_put(fw);
67 * @fw: firmware structure to load to
74 const struct firmware **fw)
94 if (!firmware_request_nowarn(fw, f, device->dev)) {
96 f, (*fw)->size);
108 nvkm_firmware_put(const struct firmware *fw)
110 release_firmware(fw);
118 struct nvkm_firmware *fw = nvkm_firmware_mem(memory);
120 switch (fw->func->type) {
121 case NVKM_FIRMWARE_IMG_DMA: return &fw->mem.sgl;
122 case NVKM_FIRMWARE_IMG_SGT: return fw->mem.sgt.sgl;
135 struct nvkm_firmware *fw = nvkm_firmware_mem(memory);
137 .memory = &fw->mem.memory,
195 nvkm_firmware_dtor(struct nvkm_firmware *fw)
197 struct nvkm_memory *memory = &fw->mem.memory;
199 if (!fw->img)
202 switch (fw->func->type) {
204 kfree(fw->img);
208 dma_free_coherent(fw->device->dev, sg_dma_len(&fw->mem.sgl), fw->img, fw->phys);
212 dma_unmap_sgtable(fw->device->dev, &fw->mem.sgt, DMA_TO_DEVICE, 0);
213 sg_free_table(&fw->mem.sgt);
214 vfree(fw->img);
221 fw->img = NULL;
226 struct nvkm_device *device, const void *src, int len, struct nvkm_firmware *fw)
228 fw->func = func;
229 fw->name = name;
230 fw->device = device;
231 fw->len = len;
233 switch (fw->func->type) {
235 fw->img = kmemdup(src, fw->len, GFP_KERNEL);
240 len = ALIGN(fw->len, PAGE_SIZE);
242 fw->img = dma_alloc_coherent(fw->device->dev, len, &addr, GFP_KERNEL);
243 if (fw->img) {
244 memcpy(fw->img, src, fw->len);
245 fw->phys = addr;
248 sg_init_one(&fw->mem.sgl, fw->img, len);
249 sg_dma_address(&fw->mem.sgl) = fw->phys;
250 sg_dma_len(&fw->mem.sgl) = len;
254 len = ALIGN(fw->len, PAGE_SIZE);
256 fw->img = vmalloc(len);
257 if (fw->img) {
261 memcpy(fw->img, src, fw->len);
263 ret = sg_alloc_table(&fw->mem.sgt, pages, GFP_KERNEL);
266 u8 *data = fw->img;
269 for_each_sgtable_sg(&fw->mem.sgt, sgl, i) {
282 ret = dma_map_sgtable(fw->device->dev, &fw->mem.sgt,
287 sg_free_table(&fw->mem.sgt);
291 vfree(fw->img);
292 fw->img = NULL;
301 if (!fw->img)
304 nvkm_memory_ctor(&nvkm_firmware_mem, &fw->mem.memory);