static int rgx_throttle_notifier_call(struct notifier_block *nfb, unsigned long mode, void *cmd) { int retval = NOTIFY_DONE; if(mode == BUDGET_GPU_THROTTLE) { if (Is_powernow) { RgxDvfsChange(min_vf_level_val, 0); Is_powernow = 0; } } else { if(cmd && (*(int *)cmd) == 1 && !Is_powernow) { RgxDvfsChange(max_vf_level_val, 1); Is_powernow = 1; } else if(cmd && (*(int *)cmd) == 0 && Is_powernow) { RgxDvfsChange(min_vf_level_val, 0); Is_powernow = 0; } } return retval; }
static int rgx_throttle_notifier_call(struct notifier_block *nfb, unsigned long mode, void *cmd) { int retval = NOTIFY_DONE; if(mode == BUDGET_GPU_THROTTLE) { b_throttle=1; Is_powernow = 0; } else { b_throttle=0; if(cmd && (*(int *)cmd) == 1 && !Is_powernow) { Is_powernow = 1; } else if(cmd && (*(int *)cmd) == 0 && Is_powernow) { Is_powernow = 0; } } if(Is_powernow != extreme_flag) { if(Is_powernow == 1) { RgxDvfsChange(max_vf_level_val, 1); extreme_flag = 1; } else { RgxDvfsChange(min_vf_level_val, 0); extreme_flag = 0; } } else { printk(KERN_INFO "RGX Don't need DVFS\n"); } return retval; }