187 lines
4.7 KiB
C
187 lines
4.7 KiB
C
/* 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 <linux/types.h>
|
|
|
|
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 */
|