/*
* fifo_ctrl.c
*
* Created on: 2012-9-4
* Author: leo
*/
#include "./fifo_ctrl.h"
static FIFO_dev *fifo_dev;
void FIFO_ctrl_init(FIFO_dev *dev)
{
dev->FIFO_ctrl = (FIFO_CTRL_reg *)(AVALON_ADPT_0_BASE + FIFO_CTRL_OFFSET);
fifo_dev = dev;
}
void FIFO_set_ctrl(FIFO_CTRL_BIT_INDEX index, BIT_STATE state)
{
U32 fifo_ctrl = fifo_dev->FIFO_ctrl->fifo_ctrl;
if(BIT_CLR == state)
{
fifo_ctrl &= (~(1 << index));
}
else if(BIT_SET == state)
{
fifo_ctrl |= (1 << index);
}
IOWR_ALTERA_AVALON_PIO_DATA(&fifo_dev->FIFO_ctrl->fifo_ctrl, fifo_ctrl);
}
void FIFO_clr_set()
{
FIFO_set_ctrl(FIFO_CLR, BIT_SET);
}
void FIFO_clr_release()
{
FIFO_set_ctrl(FIFO_CLR, BIT_CLR);
}
void FIFO_write_enable()
{
FIFO_set_ctrl(FIFO_WRITE_EN, BIT_SET);
}
void FIFO_write_disable()
{
FIFO_set_ctrl(FIFO_WRITE_EN, BIT_CLR);
}
void FIFO_read_all()
{
int i;
FIFO_set_ctrl(FIFO_READ_ALL, BIT_SET);
for(i=0; i<50; i++)
{
}
FIFO_set_ctrl(FIFO_READ_ALL, BIT_CLR);
}