Esempio n. 1
0
int sprd_iommu_mm_init(struct sprd_iommu_dev *dev, struct sprd_iommu_init_data *data)
{
	int err=-1;
#ifdef CONFIG_OF && CONFIG_COMMON_CLK
	struct device_node *np;

	np = dev->misc_dev.this_device->of_node;
	if(!np) {
		return -1;
	}

	dev->mmu_clock=of_clk_get(np, 0) ;
	dev->mmu_mclock=of_clk_get(np,1);
#else
	dev->mmu_mclock= clk_get(NULL,"clk_mm_i");
	dev->mmu_clock=clk_get(NULL,"clk_mmu");
	if (!dev->mmu_mclock) {
		printk ("%s, cant get dev->mmu_mclock\n", __FUNCTION__);
		return -1;
	}
#endif
	if (!dev->mmu_clock) {
		printk ("%s, cant get dev->mmu_clock\n", __FUNCTION__);
		return -1;
	}

	sprd_iommu_mm_enable(dev);
	err=sprd_iommu_init(dev,data);
	sprd_iommu_mm_disable(dev);
	return err;
}
int sprd_iommu_mm_init(struct sprd_iommu_dev *dev, struct sprd_iommu_init_data *data)
{
	int err=-1;
	dev->mmu_mclock= clk_get(NULL,"clk_mm_i");
	dev->mmu_clock=clk_get(NULL,"clk_mmu");
	if((NULL==dev->mmu_mclock)||(NULL==dev->mmu_clock))
		return -1;
	sprd_iommu_mm_enable(dev);
	err=sprd_iommu_init(dev,data);
	sprd_iommu_mm_disable(dev);
	return err;
}
Esempio n. 3
0
int sprd_iommu_gsp0_init(struct sprd_iommu_dev *dev,
			struct sprd_iommu_init_data *data)
{
	int err = -1;
#ifndef CONFIG_SC_FPGA
	struct device_node *np;

	np = dev->misc_dev.this_device->of_node;
	if (!np)
		return -1;

	dev->mmu_mclock = of_clk_get(np, 0);
	dev->mmu_clock = of_clk_get(np, 2);

	if (IS_ERR(dev->mmu_clock) || IS_ERR(dev->mmu_mclock)) {
		pr_info("%s, can't get clock:%p, %p\n", __func__,
			dev->mmu_clock, dev->mmu_mclock);
		goto errorout;
	}
#endif
#ifdef CONFIG_HAS_EARLYSUSPEND
	dev->early_suspend.suspend = sprd_iommu_gsp0_early_suspend;
	dev->early_suspend.resume  = sprd_iommu_gsp0_late_resume;
	dev->early_suspend.level   = EARLY_SUSPEND_LEVEL_STOP_DRAWING;
	register_early_suspend(&dev->early_suspend);
#endif

	sprd_iommu_gsp0_clk_enable(dev);
	err = sprd_iommu_init(dev, data);
	sprd_iommu_gsp0_clk_disable(dev);

	return err;

#ifndef CONFIG_SC_FPGA
errorout:
	if (dev->mmu_clock)
		clk_put(dev->mmu_clock);

	if (dev->mmu_mclock)
		clk_put(dev->mmu_mclock);

	return -1;
#endif
}
Esempio n. 4
0
int sprd_iommu_dcam_init(struct sprd_iommu_dev *dev,
                         struct sprd_iommu_init_data *data)
{
    int err = -1;
#ifndef CONFIG_SC_FPGA
    struct device_node *np;

    np = dev->misc_dev.this_device->of_node;
    if (!np)
        return -1;

    dev->mmu_clock = of_clk_get(np, 0);
    dev->mmu_mclock = of_clk_get(np, 1);

    if (IS_ERR(dev->mmu_clock) || IS_ERR(dev->mmu_mclock)) {
        pr_info("%s, can't get clock:%p, %p\n", __func__,
                dev->mmu_clock, dev->mmu_mclock);
        goto errorout;
    }
#endif
    sprd_iommu_dcam_clk_enable(dev);
    err = sprd_iommu_init(dev, data);
    sprd_iommu_dcam_clk_disable(dev);

    return err;

#ifndef CONFIG_SC_FPGA
errorout:
    if (dev->mmu_clock)
        clk_put(dev->mmu_clock);

    if (dev->mmu_mclock)
        clk_put(dev->mmu_mclock);

    return -1;
#endif
}