drivers/accel/habanalabs/goya/goya.c

Source file repositories/reference/linux-study-clean/drivers/accel/habanalabs/goya/goya.c

File Facts

System
Linux kernel
Corpus path
drivers/accel/habanalabs/goya/goya.c
Extension
.c
Size
155889 bytes
Lines
5538
Domain
Driver Families
Bucket
drivers/accel
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

.context_switch = goya_context_switch,
	.restore_phase_topology = goya_restore_phase_topology,
	.debugfs_read_dma = goya_debugfs_read_dma,
	.add_device_attr = goya_add_device_attr,
	.handle_eqe = goya_handle_eqe,
	.get_events_stat = goya_get_events_stat,
	.read_pte = goya_read_pte,
	.write_pte = goya_write_pte,
	.mmu_invalidate_cache = goya_mmu_invalidate_cache,
	.mmu_invalidate_cache_range = goya_mmu_invalidate_cache_range,
	.mmu_prefetch_cache_range = NULL,
	.send_heartbeat = goya_send_heartbeat,
	.debug_coresight = goya_debug_coresight,
	.is_device_idle = goya_is_device_idle,
	.compute_reset_late_init = goya_compute_reset_late_init,
	.hw_queues_lock = goya_hw_queues_lock,
	.hw_queues_unlock = goya_hw_queues_unlock,
	.get_pci_id = goya_get_pci_id,
	.get_eeprom_data = goya_get_eeprom_data,
	.get_monitor_dump = goya_get_monitor_dump,
	.send_cpu_message = goya_send_cpu_message,
	.pci_bars_map = goya_pci_bars_map,
	.init_iatu = goya_init_iatu,
	.rreg = hl_rreg,
	.wreg = hl_wreg,
	.halt_coresight = goya_halt_coresight,
	.ctx_init = goya_ctx_init,
	.ctx_fini = goya_ctx_fini,
	.pre_schedule_cs = goya_pre_schedule_cs,
	.get_queue_id_for_cq = goya_get_queue_id_for_cq,
	.load_firmware_to_device = goya_load_firmware_to_device,
	.load_boot_fit_to_device = goya_load_boot_fit_to_device,
	.get_signal_cb_size = goya_get_signal_cb_size,
	.get_wait_cb_size = goya_get_wait_cb_size,
	.gen_signal_cb = goya_gen_signal_cb,
	.gen_wait_cb = goya_gen_wait_cb,
	.reset_sob = goya_reset_sob,
	.reset_sob_group = goya_reset_sob_group,
	.get_device_time = goya_get_device_time,
	.pb_print_security_errors = NULL,
	.collective_wait_init_cs = goya_collective_wait_init_cs,
	.collective_wait_create_jobs = goya_collective_wait_create_jobs,
	.get_dec_base_addr = NULL,
	.scramble_addr = hl_mmu_scramble_addr,
	.descramble_addr = hl_mmu_descramble_addr,
	.ack_protection_bits_errors = goya_ack_protection_bits_errors,
	.get_hw_block_id = goya_get_hw_block_id,
	.hw_block_mmap = goya_block_mmap,
	.enable_events_from_fw = goya_enable_events_from_fw,
	.ack_mmu_errors = goya_ack_mmu_page_fault_or_access_error,
	.map_pll_idx_to_fw_idx = goya_map_pll_idx_to_fw_idx,
	.init_firmware_preload_params = goya_init_firmware_preload_params,
	.init_firmware_loader = goya_init_firmware_loader,
	.init_cpu_scrambler_dram = goya_cpu_init_scrambler_dram,
	.state_dump_init = goya_state_dump_init,
	.get_sob_addr = &goya_get_sob_addr,
	.set_pci_memory_regions = goya_set_pci_memory_regions,
	.get_stream_master_qid_arr = goya_get_stream_master_qid_arr,
	.check_if_razwi_happened = goya_check_if_razwi_happened,
	.mmu_get_real_page_size = hl_mmu_get_real_page_size,
	.access_dev_mem = hl_access_dev_mem,
	.set_dram_bar_base = goya_set_ddr_bar_base,
	.send_device_activity = goya_send_device_activity,
	.set_dram_properties = goya_set_dram_properties,
	.set_binning_masks = goya_set_binning_masks,
};

/*
 * goya_set_asic_funcs - set Goya function pointers
 *
 * @*hdev: pointer to hl_device structure
 *
 */
void goya_set_asic_funcs(struct hl_device *hdev)
{
	hdev->asic_funcs = &goya_funcs;
}

Annotation

Implementation Notes