示例#1
0
static int aml_dvb_asyncfifo_init(struct aml_dvb *advb, struct aml_asyncfifo *asyncfifo, int id)
{
#ifndef CONFIG_OF
	struct resource *res;
	char buf[32];
#endif

	if(id == 0)
		asyncfifo->asyncfifo_irq = INT_ASYNC_FIFO_FLUSH;
	else
		asyncfifo->asyncfifo_irq = INT_ASYNC_FIFO2_FLUSH;

#ifndef CONFIG_OF
	snprintf(buf, sizeof(buf), "dvr%d_irq", id);
	res = platform_get_resource_byname(advb->pdev, IORESOURCE_IRQ, buf);
	if (res) {
		asyncfifo->asyncfifo_irq = res->start;
	}
#endif

	asyncfifo->dvb = advb;
	asyncfifo->id = id;
	asyncfifo->init = 0;
	asyncfifo->flush_size = 256*1024;

	return aml_asyncfifo_hw_init(asyncfifo);
}
示例#2
0
static int aml_dvb_asyncfifo_init(struct aml_dvb *advb, struct aml_asyncfifo *asyncfifo, int id)
{
	struct resource *res;
	char buf[32];
	
	asyncfifo->asyncfifo_irq = id?asyncfifo1_irq:asyncfifo0_irq;
	if(asyncfifo->asyncfifo_irq==-1) {
		snprintf(buf, sizeof(buf), "dvr%d_irq", id);
		res = platform_get_resource_byname(advb->pdev, IORESOURCE_IRQ, buf);
		if (!res) {
			pr_error("cannot get resource %s\n", buf);
			return -1;
		}
		asyncfifo->asyncfifo_irq = res->start;
	}
	spin_lock_init(&asyncfifo->slock);
	asyncfifo->dvb = advb;
	asyncfifo->id = id;
	asyncfifo->init = 0;
	
	return aml_asyncfifo_hw_init(asyncfifo);
}