Esempio n. 1
0
void __init s3c_mfc_get_reserve_memory_info(void)
{
	mfc_platdata.buf_phy_base[0] = s3c_get_media_memory_node(S3C_MDEV_MFC, 0);
	mfc_platdata.buf_phy_base[1] = s3c_get_media_memory_node(S3C_MDEV_MFC, 1);
	mfc_platdata.buf_size[0] = s3c_get_media_memsize_node(S3C_MDEV_MFC, 0);
	mfc_platdata.buf_size[1] = s3c_get_media_memsize_node(S3C_MDEV_MFC, 1);
	s3c_mfc_set_platdata(&mfc_platdata);
}
Esempio n. 2
0
dma_addr_t s3c_get_media_memory(int dev_id)
{
	return s3c_get_media_memory_node(dev_id, 0);
}
Esempio n. 3
0
static
struct fimc_control *fimc_register_controller(struct platform_device *pdev)
{
	struct s3c_platform_fimc *pdata;
	struct fimc_control *ctrl;
	struct resource *res;
	int id, mdev_id, irq;
#ifdef VIEW_FUNCTION_CALL
	printk("[FIMC_DEV] %s(%d)\n", __func__, __LINE__);
#endif

	id = pdev->id;
	mdev_id = S3C_MDEV_FIMC0 + id;
	pdata = to_fimc_plat(&pdev->dev);

	ctrl = get_fimc_ctrl(id);
	ctrl->id = id;
	ctrl->dev = &pdev->dev;
	ctrl->vd = &fimc_video_device[id];
	ctrl->vd->minor = id;

	/* alloc from bank1 as default */
#if 0
	ctrl->mem.base = s3c_get_media_memory_node(mdev_id, 1);
	ctrl->mem.size = s3c_get_media_memsize_node(mdev_id, 1);
#else
	if(id == 0){
	   ctrl->mem.base = FIMC0_RESERVED_MEM_START;
	   ctrl->mem.size = RESERVED_MEM_FIMC0;
	}
	else if(id == 1){
	   ctrl->mem.base = FIMC1_RESERVED_MEM_START;
           ctrl->mem.size = RESERVED_MEM_FIMC1;
	}
	else if(id == 2){
	   ctrl->mem.base = FIMC2_RESERVED_MEM_START;
           ctrl->mem.size = RESERVED_MEM_FIMC2;
        }
#endif
	ctrl->mem.curr = ctrl->mem.base;

	ctrl->status = FIMC_STREAMOFF;
	ctrl->limit = &fimc_limits[id];

	sprintf(ctrl->name, "%s%d", FIMC_NAME, id);
	strcpy(ctrl->vd->name, ctrl->name);

	atomic_set(&ctrl->in_use, 0);
	mutex_init(&ctrl->lock);
	mutex_init(&ctrl->v4l2_lock);
	spin_lock_init(&ctrl->lock_in);
	spin_lock_init(&ctrl->lock_out);
	init_waitqueue_head(&ctrl->wq);

	/* get resource for io memory */
	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (!res) {
		dev_err(ctrl->dev, "%s: failed to get io memory region\n",
			__func__);
		return NULL;
	}

	/* request mem region */
	res = request_mem_region(res->start, res->end - res->start + 1,
			pdev->name);
	if (!res) {
		dev_err(ctrl->dev, "%s: failed to request io memory region\n",
			__func__);
		return NULL;
	}

	/* ioremap for register block */
	ctrl->regs = ioremap(res->start, res->end - res->start + 1);
	if (!ctrl->regs) {
		dev_err(ctrl->dev, "%s: failed to remap io region\n",
			__func__);
		return NULL;
	}

	/* irq */
	irq = platform_get_irq(pdev, 0);
	if (request_irq(irq, fimc_irq, IRQF_DISABLED, ctrl->name, ctrl))
		dev_err(ctrl->dev, "%s: request_irq failed\n", __func__);

	fimc_hwset_reset(ctrl);

	return ctrl;
}