/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ /* Copyright (c) 2023 Imagination Technologies Ltd. */ #ifndef PVR_DEVICE_INFO_H #define PVR_DEVICE_INFO_H #include struct pvr_device; /* * struct pvr_device_features - Hardware feature information */ struct pvr_device_features { bool has_axi_acelite; bool has_cdm_control_stream_format; bool has_cluster_grouping; bool has_common_store_size_in_dwords; bool has_compute; bool has_compute_morton_capable; bool has_compute_overlap; bool has_coreid_per_os; bool has_dynamic_dust_power; bool has_ecc_rams; bool has_fb_cdc_v4; bool has_fbc_max_default_descriptors; bool has_fbc_max_large_descriptors; bool has_fbcdc; bool has_fbcdc_algorithm; bool has_fbcdc_architecture; bool has_gpu_multicore_support; bool has_gpu_virtualisation; bool has_gs_rta_support; bool has_irq_per_os; bool has_isp_max_tiles_in_flight; bool has_isp_samples_per_pixel; bool has_isp_zls_d24_s8_packing_ogl_mode; bool has_layout_mars; bool has_max_partitions; bool has_meta; bool has_meta_coremem_size; bool has_mips; bool has_num_clusters; bool has_num_isp_ipp_pipes; bool has_num_osids; bool has_num_raster_pipes; bool has_pbe2_in_xe; bool has_pbvnc_coreid_reg; bool has_perfbus; bool has_perf_counter_batch; bool has_phys_bus_width; bool has_riscv_fw_processor; bool has_roguexe; bool has_s7_top_infrastructure; bool has_simple_internal_parameter_format; bool has_simple_internal_parameter_format_v2; bool has_simple_parameter_format_version; bool has_slc_banks; bool has_slc_cache_line_size_bits; bool has_slc_size_configurable; bool has_slc_size_in_kilobytes; bool has_soc_timer; bool has_sys_bus_secure_reset; bool has_tessellation; bool has_tile_region_protection; bool has_tile_size_x; bool has_tile_size_y; bool has_tla; bool has_tpu_cem_datamaster_global_registers; bool has_tpu_dm_global_registers; bool has_tpu_filtering_mode_control; bool has_usc_min_output_registers_per_pix; bool has_vdm_drawindirect; bool has_vdm_object_level_lls; bool has_virtual_address_space_bits; bool has_watchdog_timer; bool has_workgroup_protection; bool has_xe_architecture; bool has_xe_memory_hierarchy; bool has_xe_tpu2; bool has_xpu_max_regbanks_addr_width; bool has_xpu_max_slaves; bool has_xpu_register_broadcast; bool has_xt_top_infrastructure; bool has_zls_subtile; u64 cdm_control_stream_format; u64 common_store_size_in_dwords; u64 ecc_rams; u64 fbc_max_default_descriptors; u64 fbc_max_large_descriptors; u64 fbcdc; u64 fbcdc_algorithm; u64 fbcdc_architecture; u64 isp_max_tiles_in_flight; u64 isp_samples_per_pixel; u64 layout_mars; u64 max_partitions; u64 meta; u64 meta_coremem_size; u64 num_clusters; u64 num_isp_ipp_pipes; u64 num_osids; u64 num_raster_pipes; u64 phys_bus_width; u64 simple_parameter_format_version; u64 slc_banks; u64 slc_cache_line_size_bits; u64 slc_size_in_kilobytes; u64 tile_size_x; u64 tile_size_y; u64 usc_min_output_registers_per_pix; u64 virtual_address_space_bits; u64 xe_architecture; u64 xpu_max_regbanks_addr_width; u64 xpu_max_slaves; u64 xpu_register_broadcast; }; /* * struct pvr_device_quirks - Hardware quirk information */ struct pvr_device_quirks { bool has_brn44079; bool has_brn47217; bool has_brn48492; bool has_brn48545; bool has_brn49927; bool has_brn50767; bool has_brn51764; bool has_brn62269; bool has_brn63142; bool has_brn63553; bool has_brn66011; bool has_brn71242; }; /* * struct pvr_device_enhancements - Hardware enhancement information */ struct pvr_device_enhancements { bool has_ern35421; bool has_ern38020; bool has_ern38748; bool has_ern42064; bool has_ern42290; bool has_ern42606; bool has_ern47025; bool has_ern57596; }; void pvr_device_info_set_quirks(struct pvr_device *pvr_dev, const u64 *bitmask, u32 bitmask_len); void pvr_device_info_set_enhancements(struct pvr_device *pvr_dev, const u64 *bitmask, u32 bitmask_len); int pvr_device_info_set_features(struct pvr_device *pvr_dev, const u64 *features, u32 features_size, u32 feature_param_size); /* * Meta cores * * These are the values for the 'meta' feature when the feature is present * (as per &struct pvr_device_features)/ */ #define PVR_META_MTP218 (1) #define PVR_META_MTP219 (2) #define PVR_META_LTP218 (3) #define PVR_META_LTP217 (4) enum { PVR_FEATURE_CDM_USER_MODE_QUEUE, PVR_FEATURE_CLUSTER_GROUPING, PVR_FEATURE_COMPUTE_MORTON_CAPABLE, PVR_FEATURE_FB_CDC_V4, PVR_FEATURE_GPU_MULTICORE_SUPPORT, PVR_FEATURE_ISP_ZLS_D24_S8_PACKING_OGL_MODE, PVR_FEATURE_REQUIRES_FB_CDC_ZLS_SETUP, PVR_FEATURE_S7_TOP_INFRASTRUCTURE, PVR_FEATURE_TESSELLATION, PVR_FEATURE_TPU_DM_GLOBAL_REGISTERS, PVR_FEATURE_VDM_DRAWINDIRECT, PVR_FEATURE_VDM_OBJECT_LEVEL_LLS, PVR_FEATURE_ZLS_SUBTILE, }; #endif /* PVR_DEVICE_INFO_H */