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;
}
Example #2
0
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;
}