static int __devinit gpu_suspend(struct platform_device *dev, pm_message_t state) { gceSTATUS status = gcvSTATUS_OK; gckGALDEVICE device; gctINT i; gctINT ret = 0; device = platform_get_drvdata(dev); printk("[galcore] enter %s\n", __FUNCTION__); for (i = 0; i < gcdMAX_GPU_COUNT; i++) { if (device->kernels[i] != gcvNULL) { /* Store states. */ #if gcdENABLE_VG if (i == gcvCORE_VG) { status = gckVGHARDWARE_QueryPowerManagementState(device->kernels[i]->vg->hardware, &device->statesStored[i]); } else #endif { status = gckHARDWARE_QueryPowerManagementState(device->kernels[i]->hardware, &device->statesStored[i]); } if (gcmIS_ERROR(status)) { ret = -1; goto err_out; } #if gcdENABLE_VG if (i == gcvCORE_VG) { status = gckVGHARDWARE_SetPowerManagementState(device->kernels[i]->vg->hardware, gcvPOWER_OFF); } else #endif { status = gckHARDWARE_SetPowerManagementState(device->kernels[i]->hardware, gcvPOWER_OFF); } if (gcmIS_ERROR(status)) { ret = -1; goto err_out; } galDevice->currentPMode = gcvPM_SUSPEND; } } err_out: printk("[galcore] exit %s, return %d\n", __FUNCTION__, ret); return ret; }
static int gpu_suspend(struct platform_device *dev, pm_message_t state) { gceSTATUS status; gckGALDEVICE device; gctINT i; device = platform_get_drvdata(dev); if (!device) { return -1; } for (i = 0; i < gcdMAX_GPU_COUNT; i++) { if (device->kernels[i] != gcvNULL) { /* Store states. */ #if gcdENABLE_VG if (i == gcvCORE_VG) { status = gckVGHARDWARE_QueryPowerManagementState(device->kernels[i]->vg->hardware, &device->statesStored[i]); } else #endif { status = gckHARDWARE_QueryPowerManagementState(device->kernels[i]->hardware, &device->statesStored[i]); } if (gcmIS_ERROR(status)) { return -1; } #if gcdENABLE_VG if (i == gcvCORE_VG) { status = gckVGHARDWARE_SetPowerManagementState(device->kernels[i]->vg->hardware, gcvPOWER_OFF); } else #endif { status = gckHARDWARE_SetPowerManagementState(device->kernels[i]->hardware, gcvPOWER_OFF); } if (gcmIS_ERROR(status)) { return -1; } } } return 0; }