static ssize_t store_clk_rate (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { gceSTATUS status = gcvSTATUS_OK; int core, frequency, i, gpu_count; for (i = 0, gpu_count = 0; i < gcdMAX_GPU_COUNT; i++) if (galDevice->kernels[i] != gcvNULL) gpu_count++; /* read input and verify */ SYSFS_VERIFY_INPUT(sscanf(buf, "%d,%d", &core, &frequency), 2); SYSFS_VERIFY_INPUT_RANGE(core, 0, (gpu_count-1)); SYSFS_VERIFY_INPUT_RANGE(frequency, 156, 624); status = gckOS_SetClkRate(galDevice->os, core, frequency*1000*1000); if(gcmIS_ERROR(status)) { printk("fail to set core[%d] frequency to %d MHZ\n", core, frequency); } return count; }
static ssize_t store_clk_rate (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { gceSTATUS status; int core, frequency, i, gpu_count; for (i = 0, gpu_count = 0; i < gcdMAX_GPU_COUNT; i++) if (galDevice->kernels[i] != gcvNULL) gpu_count++; #if MRVL_CONFIG_SHADER_CLK_CONTROL if(has_feat_gc_shader()) gpu_count++; #endif /* read input and verify */ SYSFS_VERIFY_INPUT(sscanf(buf, "%d,%d", &core, &frequency), 2); SYSFS_VERIFY_INPUT_RANGE(core, 0, (gpu_count-1)); SYSFS_VERIFY_INPUT_RANGE(frequency, 156, 624); #if MRVL_CONFIG_SHADER_CLK_CONTROL if(has_feat_gc_shader() && core == gcvCORE_SH) { status = gckOS_SetShClkRate(galDevice->os, frequency*1000*1000); } else #endif { status = gckOS_SetClkRate(galDevice->os, core, frequency*1000*1000); } if(gcmIS_ERROR(status)) { printk("fail to set core[%d] frequency to %d MHZ\n", core, frequency); } return count; }