Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
#ifndef _MSM_KGSL_H
#define _MSM_KGSL_H

#include <uapi/linux/msm_kgsl.h>

/* Clock flags to show which clocks should be controled by a given platform */
#define KGSL_CLK_SRC	0x00000001
#define KGSL_CLK_CORE	0x00000002
#define KGSL_CLK_IFACE	0x00000004
#define KGSL_CLK_MEM	0x00000008
#define KGSL_CLK_MEM_IFACE 0x00000010
#define KGSL_CLK_AXI	0x00000020
#define KGSL_CLK_ALT_MEM_IFACE 0x00000040
#define KGSL_CLK_RBBMTIMER	0x00000080
#define KGSL_CLK_GFX_GTCU   0x00000100
#define KGSL_CLK_GFX_GTBU   0x00000200

#define KGSL_MAX_PWRLEVELS 10

#define KGSL_3D0_REG_MEMORY	"kgsl_3d0_reg_memory"
#define KGSL_3D0_SHADER_MEMORY	"kgsl_3d0_shader_memory"
#define KGSL_3D0_IRQ		"kgsl_3d0_irq"

/**
 * struct kgsl_pwrlevel - Struct holding different pwrlevel info obtained from
 * from dtsi file
 * @gpu_freq:		GPU frequency vote in Hz
 * @bus_freq:		Bus bandwidth vote index
 * @bus_min:		Min bus index @gpu_freq
 * @bus_max:		Max bus index @gpu_freq
 */
struct kgsl_pwrlevel {
	unsigned int gpu_freq;
	unsigned int bus_freq;
	unsigned int bus_min;
	unsigned int bus_max;
};

/**
 * struct kgsl_device_platform_data - Struct holding all the device info
 * obtained from the dtsi file
 * @pwrlevel:		Array of struct holding pwrlevel information
 * @init_level:		Pwrlevel device is initialized with
 * @num_levels:		Number of pwrlevels for the specific device
 * @idle_timeout:	Timeout for GPU to turn its resources off
 * @strtstp_sleepwake:  Flag to decide b/w SLEEP and SLUMBER
 * @bus_control:	Flag if independent bus voting is supported
 * @popp_enable:	Flag to enable POPP feature
 * @clk_map:		Clocks map per platform
 * @bus_scale_table:	Bus table with different b/w votes
 * @iommu_data:		Struct holding iommu context data
 * @iommu_count:	Number of IOMMU units for the GPU
 * @csdev:		Pointer to the coresight device for this device
 * @coresight_pdata:	Coresight configuration for specific device
 * @chipid:		Chip ID for the device's GPU
 * @pm_qos_active_latency:	GPU PM QoS latency request for active state
 * @pm_qos_wakeup_latency:	GPU PM QoS latency request during wakeup
 */
struct kgsl_device_platform_data {
	struct kgsl_pwrlevel pwrlevel[KGSL_MAX_PWRLEVELS];
	int init_level;
	int num_levels;
	unsigned int idle_timeout;
	bool strtstp_sleepwake;
	bool bus_control;
	bool popp_enable;
	unsigned int clk_map;
	unsigned int step_mul;
	struct msm_bus_scale_pdata *bus_scale_table;
	struct kgsl_device_iommu_data *iommu_data;
	int iommu_count;
	struct coresight_device *csdev;
	struct coresight_platform_data *coresight_pdata;
	unsigned int chipid;
	unsigned int pm_qos_active_latency;
	unsigned int pm_qos_wakeup_latency;
};

/* Limits mitigations APIs */
void *kgsl_pwr_limits_add(enum kgsl_deviceid id);
void kgsl_pwr_limits_del(void *limit);
int kgsl_pwr_limits_set_freq(void *limit, unsigned int freq);
void kgsl_pwr_limits_set_default(void *limit);
unsigned int kgsl_pwr_limits_get_freq(enum kgsl_deviceid id);

#ifdef CONFIG_MSM_KGSL_DRM
int kgsl_gem_obj_addr(int drm_fd, int handle, unsigned long *start,
			unsigned long *len);
#else
#define kgsl_gem_obj_addr(...) 0
#endif
#endif /* _MSM_KGSL_H */