Ejemplo n.º 1
0
IMG_VOID DisableSystemClocks(SYS_DATA *psSysData)
{
	SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData;

	PVR_TRACE(("DisableSystemClocks: Disabling System Clocks"));

	DisableSGXClocks(psSysData);

	/* disable & gate clock, power down */
	clk_disable_unprepare(psSysSpecData->psSGXClock);
	cpm_pwc_disable(psSysSpecData->pCPMHandle);
}
Ejemplo n.º 2
0
void jzsoc_cpu_die(unsigned int cpu)
{
	unsigned long flags;
	unsigned int status;
	if (cpu == 0)		/* FIXME */
		return;
	local_irq_save(flags);
	cpumask_clear_cpu(cpu, cpu_ready);
	cpumask_clear_cpu(cpu, &cpu_start);
	cpumask_clear_cpu(cpu, &cpu_running);
	wmb();
	do{
		status = get_smp_status();
	}while(!(status & (1<<(cpu+16))));
	cpm_pwc_disable(scpu_pwc);
	cpm_set_bit(15,CPM_CLKGR1);
	local_irq_restore(flags);

	printk("disable cpu %d\n",cpu);
}
Ejemplo n.º 3
0
static long vpu_off(struct jz_vpu *vpu)
{	
	disable_irq_nosync(vpu->irq);

	__asm__ __volatile__ (
			"mfc0  $2, $16,  7   \n\t"
			"andi  $2, $2, 0xbf \n\t"
			"mtc0  $2, $16,  7  \n\t"
			"nop                  \n\t");

	cpm_clear_bit(31,CPM_OPCR);
	clk_disable(vpu->clk);
	clk_disable(vpu->clk_gate);
	cpm_pwc_disable(vpu->cpm_pwc);
	/* Clear completion use_count here to avoid a unhandled irq after vpu off */
	vpu->done.done = 0;
        //wake_unlock(&vpu->wake_lock);
	dev_dbg(vpu->dev, "[%d:%d] off\n", current->tgid, current->pid);

	return 0;
}