1 /* 2 * 3 * (C) COPYRIGHT 2011-2015,2017 ARM Limited. All rights reserved. 4 * 5 * This program is free software and is provided to you under the terms of the 6 * GNU General Public License version 2 as published by the Free Software 7 * Foundation, and any use by you of this program is subject to the terms 8 * of such GNU licence. 9 * 10 * A copy of the licence is included with the program, and can also be obtained 11 * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 12 * Boston, MA 02110-1301, USA. 13 * 14 */ 15 16 17 18 19 20 /** 21 * @file mali_kbase_gpuprops.h 22 * Base kernel property query APIs 23 */ 24 25 #ifndef _KBASE_GPUPROPS_H_ 26 #define _KBASE_GPUPROPS_H_ 27 28 #include "mali_kbase_gpuprops_types.h" 29 30 /* Forward definition - see mali_kbase.h */ 31 struct kbase_device; 32 33 /** 34 * @brief Set up Kbase GPU properties. 35 * 36 * Set up Kbase GPU properties with information from the GPU registers 37 * 38 * @param kbdev The struct kbase_device structure for the device 39 */ 40 void kbase_gpuprops_set(struct kbase_device *kbdev); 41 42 /** 43 * kbase_gpuprops_set_features - Set up Kbase GPU properties 44 * @kbdev: Device pointer 45 * 46 * This function sets up GPU properties that are dependent on the hardware 47 * features bitmask. This function must be preceeded by a call to 48 * kbase_hw_set_features_mask(). 49 */ 50 void kbase_gpuprops_set_features(struct kbase_device *kbdev); 51 52 /** 53 * @brief Provide GPU properties to userside through UKU call. 54 * 55 * Fill the struct kbase_uk_gpuprops with values from GPU configuration registers. 56 * 57 * @param kctx The struct kbase_context structure 58 * @param kbase_props A copy of the struct kbase_uk_gpuprops structure from userspace 59 * 60 * @return 0 on success. Any other value indicates failure. 61 */ 62 int kbase_gpuprops_uk_get_props(struct kbase_context *kctx, struct kbase_uk_gpuprops * const kbase_props); 63 64 /** 65 * kbase_gpuprops_populate_user_buffer - Populate the GPU properties buffer 66 * @kbdev: The kbase device 67 * 68 * Fills kbdev->gpu_props->prop_buffer with the GPU properties for user 69 * space to read. 70 */ 71 int kbase_gpuprops_populate_user_buffer(struct kbase_device *kbdev); 72 73 /** 74 * kbase_gpuprops_update_core_props_gpu_id - break down gpu id value 75 * @gpu_props: the &base_gpu_props structure 76 * 77 * Break down gpu_id value stored in base_gpu_props::raw_props.gpu_id into 78 * separate fields (version_status, minor_revision, major_revision, product_id) 79 * stored in base_gpu_props::core_props. 80 */ 81 void kbase_gpuprops_update_core_props_gpu_id(base_gpu_props * const gpu_props); 82 83 84 #endif /* _KBASE_GPUPROPS_H_ */ 85