Lines Matching refs:fw_dev
51 const struct pvr_fw_layout_entry *layout_entries = pvr_dev->fw_dev.layout_entries; in pvr_fw_find_layout_entry()
52 u32 num_layout_entries = pvr_dev->fw_dev.header->layout_entry_num; in pvr_fw_find_layout_entry()
66 const struct pvr_fw_layout_entry *layout_entries = pvr_dev->fw_dev.layout_entries; in pvr_fw_find_private_data()
67 u32 num_layout_entries = pvr_dev->fw_dev.header->layout_entry_num; in pvr_fw_find_private_data()
94 const struct firmware *firmware = pvr_dev->fw_dev.firmware; in pvr_fw_validate()
163 pvr_dev->fw_dev.header = header; in pvr_fw_validate()
164 pvr_dev->fw_dev.layout_entries = layout_entries; in pvr_fw_validate()
172 const struct firmware *firmware = pvr_dev->fw_dev.firmware; in pvr_fw_get_device_info()
178 fw_offset = (firmware->size - SZ_4K) - pvr_dev->fw_dev.header->device_info_size; in pvr_fw_get_device_info()
196 const struct pvr_fw_layout_entry *layout_entries = pvr_dev->fw_dev.layout_entries; in layout_get_sizes()
197 u32 num_layout_entries = pvr_dev->fw_dev.header->layout_entry_num; in layout_get_sizes()
198 struct pvr_fw_mem *fw_mem = &pvr_dev->fw_dev.mem; in layout_get_sizes()
233 const struct pvr_fw_layout_entry *layout_entries = pvr_dev->fw_dev.layout_entries; in pvr_fw_find_mmu_segment()
234 u32 num_layout_entries = pvr_dev->fw_dev.header->layout_entry_num; in pvr_fw_find_mmu_segment()
288 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_create_fwif_connection_ctl() local
290 fw_dev->fwif_connection_ctl = in pvr_fw_create_fwif_connection_ctl()
292 fw_dev->fw_heap_info.config_offset + in pvr_fw_create_fwif_connection_ctl()
294 sizeof(*fw_dev->fwif_connection_ctl), in pvr_fw_create_fwif_connection_ctl()
297 &fw_dev->mem.fwif_connection_ctl_obj); in pvr_fw_create_fwif_connection_ctl()
298 if (IS_ERR(fw_dev->fwif_connection_ctl)) { in pvr_fw_create_fwif_connection_ctl()
301 return PTR_ERR(fw_dev->fwif_connection_ctl); in pvr_fw_create_fwif_connection_ctl()
310 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_fini_fwif_connection_ctl() local
312 pvr_fw_object_unmap_and_destroy(fw_dev->mem.fwif_connection_ctl_obj); in pvr_fw_fini_fwif_connection_ctl()
320 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in fw_osinit_init() local
321 struct pvr_fw_mem *fw_mem = &fw_dev->mem; in fw_osinit_init()
349 struct pvr_fw_mem *fw_mem = &pvr_dev->fw_dev.mem; in fw_osdata_init()
368 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in fw_sysinit_init() local
369 struct pvr_fw_mem *fw_mem = &fw_dev->mem; in fw_sysinit_init()
382 pvr_fw_object_get_fw_addr(fw_dev->fw_trace.tracebuf_ctrl_obj, in fw_sysinit_init()
458 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_create_structures() local
459 struct pvr_fw_mem *fw_mem = &fw_dev->mem; in pvr_fw_create_structures()
462 fw_dev->power_sync = pvr_fw_object_create_and_map(pvr_dev, sizeof(*fw_dev->power_sync), in pvr_fw_create_structures()
465 if (IS_ERR(fw_dev->power_sync)) { in pvr_fw_create_structures()
467 return PTR_ERR(fw_dev->power_sync); in pvr_fw_create_structures()
470 fw_dev->hwrinfobuf = pvr_fw_object_create_and_map(pvr_dev, sizeof(*fw_dev->hwrinfobuf), in pvr_fw_create_structures()
473 if (IS_ERR(fw_dev->hwrinfobuf)) { in pvr_fw_create_structures()
476 err = PTR_ERR(fw_dev->hwrinfobuf); in pvr_fw_create_structures()
489 fw_dev->fwif_sysdata = pvr_fw_object_create_and_map(pvr_dev, in pvr_fw_create_structures()
490 sizeof(*fw_dev->fwif_sysdata), in pvr_fw_create_structures()
494 if (IS_ERR(fw_dev->fwif_sysdata)) { in pvr_fw_create_structures()
496 err = PTR_ERR(fw_dev->fwif_sysdata); in pvr_fw_create_structures()
528 fw_dev->fwif_osdata = pvr_fw_object_create_and_map(pvr_dev, in pvr_fw_create_structures()
529 sizeof(*fw_dev->fwif_osdata), in pvr_fw_create_structures()
533 if (IS_ERR(fw_dev->fwif_osdata)) { in pvr_fw_create_structures()
535 err = PTR_ERR(fw_dev->fwif_osdata); in pvr_fw_create_structures()
539 fw_dev->fwif_osinit = in pvr_fw_create_structures()
541 fw_dev->fw_heap_info.config_offset + in pvr_fw_create_structures()
543 sizeof(*fw_dev->fwif_osinit), in pvr_fw_create_structures()
546 if (IS_ERR(fw_dev->fwif_osinit)) { in pvr_fw_create_structures()
548 err = PTR_ERR(fw_dev->fwif_osinit); in pvr_fw_create_structures()
552 fw_dev->fwif_sysinit = in pvr_fw_create_structures()
554 fw_dev->fw_heap_info.config_offset + in pvr_fw_create_structures()
556 sizeof(*fw_dev->fwif_sysinit), in pvr_fw_create_structures()
559 if (IS_ERR(fw_dev->fwif_sysinit)) { in pvr_fw_create_structures()
561 err = PTR_ERR(fw_dev->fwif_sysinit); in pvr_fw_create_structures()
603 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_destroy_structures() local
604 struct pvr_fw_mem *fw_mem = &fw_dev->mem; in pvr_fw_destroy_structures()
634 struct pvr_fw_mem *fw_mem = &pvr_dev->fw_dev.mem; in pvr_fw_process()
635 const u8 *fw = pvr_dev->fw_dev.firmware->data; in pvr_fw_process()
666 if (pvr_dev->fw_dev.defs->has_fixed_data_addr()) { in pvr_fw_process()
667 u32 base_addr = private_data->base_addr & pvr_dev->fw_dev.fw_heap_info.offset_mask; in pvr_fw_process()
730 err = pvr_dev->fw_dev.defs->fw_process(pvr_dev, fw, in pvr_fw_process()
805 struct pvr_fw_mem *fw_mem = &pvr_dev->fw_dev.mem; in pvr_fw_reinit_code_data()
836 struct pvr_fw_mem *fw_mem = &pvr_dev->fw_dev.mem; in pvr_fw_cleanup()
859 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_wait_for_fw_boot() local
862 if (READ_ONCE(fw_dev->fwif_sysinit->firmware_started)) in pvr_wait_for_fw_boot()
878 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_heap_info_init() local
880 fw_dev->fw_heap_info.gpu_addr = PVR_ROGUE_FW_MAIN_HEAP_BASE; in pvr_fw_heap_info_init()
881 fw_dev->fw_heap_info.log2_size = log2_size; in pvr_fw_heap_info_init()
882 fw_dev->fw_heap_info.reserved_size = reserved_size; in pvr_fw_heap_info_init()
883 fw_dev->fw_heap_info.raw_size = 1 << fw_dev->fw_heap_info.log2_size; in pvr_fw_heap_info_init()
884 fw_dev->fw_heap_info.offset_mask = fw_dev->fw_heap_info.raw_size - 1; in pvr_fw_heap_info_init()
885 fw_dev->fw_heap_info.config_offset = fw_dev->fw_heap_info.raw_size - in pvr_fw_heap_info_init()
887 fw_dev->fw_heap_info.size = fw_dev->fw_heap_info.raw_size - in pvr_fw_heap_info_init()
931 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_init() local
934 if (fw_dev->processor_type == PVR_FW_PROCESSOR_TYPE_META) in pvr_fw_init()
935 fw_dev->defs = &pvr_fw_defs_meta; in pvr_fw_init()
936 else if (fw_dev->processor_type == PVR_FW_PROCESSOR_TYPE_MIPS) in pvr_fw_init()
937 fw_dev->defs = &pvr_fw_defs_mips; in pvr_fw_init()
941 err = fw_dev->defs->init(pvr_dev); in pvr_fw_init()
945 drm_mm_init(&fw_dev->fw_mm, ROGUE_FW_HEAP_BASE, fw_dev->fw_heap_info.raw_size); in pvr_fw_init()
946 fw_dev->fw_mm_base = ROGUE_FW_HEAP_BASE; in pvr_fw_init()
947 spin_lock_init(&fw_dev->fw_mm_lock); in pvr_fw_init()
949 INIT_LIST_HEAD(&fw_dev->fw_objs.list); in pvr_fw_init()
950 err = drmm_mutex_init(from_pvr_device(pvr_dev), &fw_dev->fw_objs.lock); in pvr_fw_init()
990 fw_dev->booted = true; in pvr_fw_init()
1013 drm_mm_takedown(&fw_dev->fw_mm); in pvr_fw_init()
1015 if (fw_dev->defs->fini) in pvr_fw_init()
1016 fw_dev->defs->fini(pvr_dev); in pvr_fw_init()
1028 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_fini() local
1030 fw_dev->booted = false; in pvr_fw_fini()
1043 mutex_lock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_fini()
1044 WARN_ON(!list_empty(&pvr_dev->fw_dev.fw_objs.list)); in pvr_fw_fini()
1045 mutex_unlock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_fini()
1047 drm_mm_takedown(&fw_dev->fw_mm); in pvr_fw_fini()
1049 if (fw_dev->defs->fini) in pvr_fw_fini()
1050 fw_dev->defs->fini(pvr_dev); in pvr_fw_fini()
1161 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_object_fw_map() local
1165 spin_lock(&fw_dev->fw_mm_lock); in pvr_fw_object_fw_map()
1177 err = drm_mm_insert_node_in_range(&fw_dev->fw_mm, &fw_obj->fw_mm_node, in pvr_fw_object_fw_map()
1179 fw_dev->fw_heap_info.gpu_addr, in pvr_fw_object_fw_map()
1180 fw_dev->fw_heap_info.gpu_addr + in pvr_fw_object_fw_map()
1181 fw_dev->fw_heap_info.size, 0); in pvr_fw_object_fw_map()
1187 err = drm_mm_reserve_node(&fw_dev->fw_mm, &fw_obj->fw_mm_node); in pvr_fw_object_fw_map()
1192 spin_unlock(&fw_dev->fw_mm_lock); in pvr_fw_object_fw_map()
1195 err = fw_dev->defs->vm_map(pvr_dev, fw_obj); in pvr_fw_object_fw_map()
1199 fw_obj->fw_addr_offset = (u32)(fw_obj->fw_mm_node.start - fw_dev->fw_mm_base); in pvr_fw_object_fw_map()
1204 spin_lock(&fw_dev->fw_mm_lock); in pvr_fw_object_fw_map()
1208 spin_unlock(&fw_dev->fw_mm_lock); in pvr_fw_object_fw_map()
1227 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_fw_object_fw_unmap() local
1229 fw_dev->defs->vm_unmap(pvr_dev, fw_obj); in pvr_fw_object_fw_unmap()
1231 spin_lock(&fw_dev->fw_mm_lock); in pvr_fw_object_fw_unmap()
1234 spin_unlock(&fw_dev->fw_mm_lock); in pvr_fw_object_fw_unmap()
1240 spin_unlock(&fw_dev->fw_mm_lock); in pvr_fw_object_fw_unmap()
1288 mutex_lock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_object_create_and_map_common()
1289 list_add_tail(&fw_obj->node, &pvr_dev->fw_dev.fw_objs.list); in pvr_fw_object_create_and_map_common()
1290 mutex_unlock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_object_create_and_map_common()
1399 u64 dev_addr = pvr_dev->fw_dev.fw_mm_base + dev_offset; in pvr_fw_object_create_and_map_offset()
1415 mutex_lock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_object_destroy()
1417 mutex_unlock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_object_destroy()
1443 *fw_addr_out = pvr_dev->fw_dev.defs->get_fw_addr_with_offset(fw_obj, offset); in pvr_fw_object_get_fw_addr_offset()
1464 mutex_lock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_hard_reset()
1466 list_for_each(pos, &pvr_dev->fw_dev.fw_objs.list) { in pvr_fw_hard_reset()
1482 mutex_unlock(&pvr_dev->fw_dev.fw_objs.lock); in pvr_fw_hard_reset()