Exemplo n.º 1
0
void kgsl_g12_updatetimestamp(struct kgsl_device *device)
{
	unsigned int count = 0;

	KGSL_DRV_DBG("kgsl_g12_updatetimestamp\n");

	kgsl_g12_regread(device, ADDR_VGC_IRQ_ACTIVE_CNT >> 2, &count);

	count >>= 8;
	count &= 255;
	device->timestamp += count;

	KGSL_DRV_DBG("kgsl_g12_updatetimestamp : %i Current :%i\n",
				device->timestamp, device->current_timestamp);
}
Exemplo n.º 2
0
/* Caller must hold the device mutex. */
int kgsl_pwrctrl_sleep(struct kgsl_device *device)
{
	KGSL_DRV_DBG("kgsl_pwrctrl_sleep device %d!!!\n", device->id);

	/* Work through the legal state transitions */
	if (device->requested_state == KGSL_STATE_NAP) {
		if (device->ftbl.device_isidle(device))
			goto nap;
	} else if (device->requested_state == KGSL_STATE_SLEEP) {
		if (device->state == KGSL_STATE_NAP ||
			device->ftbl.device_isidle(device))
			goto sleep;
	}

	device->requested_state = KGSL_STATE_NONE;
	return KGSL_FAILURE;

sleep:
	kgsl_pwrctrl_irq(device, KGSL_PWRFLAGS_IRQ_OFF);
	kgsl_pwrctrl_axi(device, KGSL_PWRFLAGS_AXI_OFF);
	goto clk_off;

nap:
	kgsl_pwrctrl_irq(device, KGSL_PWRFLAGS_IRQ_OFF);
clk_off:
	kgsl_pwrctrl_clk(device, KGSL_PWRFLAGS_CLK_OFF);

	device->state = device->requested_state;
	device->requested_state = KGSL_STATE_NONE;
	wake_unlock(&device->idle_wakelock);

	return KGSL_SUCCESS;
}
Exemplo n.º 3
0
void kgsl_g12_idle_check(struct work_struct *work)
{
	struct kgsl_device *device = &kgsl_driver.g12_device;

	KGSL_DRV_DBG("kgsl_g12_idle_check\n");
	mutex_lock(&kgsl_driver.mutex);
	if (device->flags & KGSL_FLAGS_STARTED) {
		if (kgsl_g12_sleep(device, false) == KGSL_FAILURE)
			mod_timer(&idle_timer, jiffies + INTERVAL_TIMEOUT);
	}
	mutex_unlock(&kgsl_driver.mutex);
}