}
static struct kobject *mali400_utility_object;
+static struct kobject *rk_gpu;
+
static u32 get_mali_dvfs_status(void)
{
return maliDvfsStatus.currentStep;
if (mali400_utility_object == NULL) {
return -1;
}
+ rk_gpu = kobject_create_and_add("rk_gpu", NULL);
+ if (!rk_gpu)
+ return -1;
ret = sysfs_create_file(mali400_utility_object, &dev_attr_utility.attr);
if (ret) {
return -1;
}
ret = sysfs_create_file(mali400_utility_object, &dev_attr_sampling_timeout.attr);
if(ret){
- return -1;
+ return -1;
}
- ret = sysfs_create_file(mali400_utility_object, &dev_attr_error_count.attr);
+ ret = sysfs_create_file(rk_gpu, &dev_attr_error_count.attr);
if(ret){
return -1;
}
address |= kbase_reg_read(kbdev, GPU_CONTROL_REG(GPU_FAULTADDRESS_LO), NULL);
dev_warn(kbdev->dev, "GPU Fault 0x%08x (%s) at 0x%016llx", status & 0xFF, kbase_exception_name(status), address);
+ kbdev->kbase_group_error++;
if (multiple)
dev_warn(kbdev->dev, "There were multiple GPU faults - some have not been reported\n");
}
/* remove the queued PFs from the mask */
new_mask &= ~((1UL << as_no) | (1UL << (as_no + num_as)));
-
+ kbdev->kbase_group_error++;
/* queue work pending for this AS */
KBASE_DEBUG_ASSERT(0 == object_is_on_stack(&as->work_pagefault));
INIT_WORK(&as->work_pagefault, page_fault_worker);
static int mali_clk_status = 0;
static int mali_pd_status = 0;
+u32 kbase_group_error = 0;
+static struct kobject *rk_gpu;
+
int mali_dvfs_clk_set(struct dvfs_node *node,unsigned long rate)
{
int ret = 0;
return 0;
}
+static ssize_t error_count_show(struct device *dev,struct device_attribute *attr, char *buf)
+{
+ struct kbase_device *kbdev = dev_get_drvdata(dev);
+ ssize_t ret;
+
+ ret = scnprintf(buf, PAGE_SIZE, "%d\n", kbdev->kbase_group_error);
+ return ret;
+}
+static DEVICE_ATTR(error_count, S_IRUGO, error_count_show, NULL);
+
#ifdef CONFIG_MALI_MIDGARD_DEBUG_SYS
static ssize_t show_clock(struct device *dev, struct device_attribute *attr, char *buf)
{
mali_error kbase_platform_init(struct kbase_device *kbdev)
{
struct rk_context *platform;
+ int ret;
platform = kmalloc(sizeof(struct rk_context), GFP_KERNEL);
platform->dvfs_enabled = true;
#endif
+ rk_gpu = kobject_create_and_add("rk_gpu", NULL);
+ if (!rk_gpu)
+ return MALI_ERROR_FUNCTION_FAILED;
+
+ ret = sysfs_create_file(rk_gpu, &dev_attr_error_count.attr);
+ if(ret)
+ return MALI_ERROR_FUNCTION_FAILED;
+
spin_lock_init(&platform->cmu_pmu_lock);
if (kbase_platform_power_clock_init(kbdev))