2.9. pl08x_make_LLIs

/*
 * This single pool easier to manage than one pool per channel
 */
int pl08x_make_LLIs(void)
{
	int ret = 0;

	/*
	 * Make a pool of LLI buffers
	 */
	pd.pool	= dma_pool_create(pl08x_amba_driver.drv.name, &pd.dmac->dev,
			PL08X_LLI_TSFR_SIZE, PL08X_ALIGN, PL08X_ALLOC);
	if (!pd.pool) {
		ret = -ENOMEM;
		kfree(pd.chanllis);
	}
	pd.pool_ctr = 0;
	return ret;
}
        
[注意]注意

需要提到一点的是,如果你的驱动在初始化的时候,设置了下图:

图 2.1. 配置寄存器的含义

配置寄存器的含义


中的config寄存器中的ITC位,即终止计数中断,那么就会在每一个LLI传完之后就调用下面的这个pl08x_irq中断函数,如果没有设置ITC,而只是对最有一个LLI的ITC 设置了,那么就是所有的传输完成了,才会调用下面的pl08x_irq中断函数了