Commit 736d8971 authored by Federico Vaga's avatar Federico Vaga

kernel: do not use FMC io function directly

Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent aeb5f99c
......@@ -164,28 +164,30 @@ struct fmctdc_dev {
uint64_t sequence; /**< Board time-stamp sequence number */
};
static inline uint32_t ft_readl(struct fmctdc_dev *ft, unsigned long reg)
static inline u32 ft_ioread(struct fmctdc_dev *ft, unsigned long addr)
{
return fmc_readl(ft->fmc, ft->ft_core_base + reg);
return fmc_readl(ft->fmc, addr);
}
static inline void ft_writel(struct fmctdc_dev *ft, uint32_t v,
unsigned long reg)
static inline void ft_iowrite(struct fmctdc_dev *ft,
u32 value, unsigned long addr)
{
fmc_writel(ft->fmc, v, ft->ft_core_base + reg);
fmc_writel(ft->fmc, value, addr);
}
static inline u32 ft_ioread(struct fmctdc_dev *ft, unsigned long addr)
static inline uint32_t ft_readl(struct fmctdc_dev *ft, unsigned long reg)
{
return fmc_readl(ft->fmc, addr);
return ft_ioread(ft, ft->ft_core_base + reg);
}
static inline void ft_iowrite(struct fmctdc_dev *ft,
u32 value, unsigned long addr)
static inline void ft_writel(struct fmctdc_dev *ft, uint32_t v,
unsigned long reg)
{
fmc_writel(ft->fmc, value, addr);
ft_iowrite(ft, v, ft->ft_core_base + reg);
}
void ft_enable_acquisition(struct fmctdc_dev *ft, int enable);
int ft_acam_init(struct fmctdc_dev *ft);
......
......@@ -58,15 +58,15 @@ static int ft_reset_core(struct fmctdc_dev *ft)
dev_dbg(&ft->fmc->dev, "Un-resetting FMCs...\n");
/* Reset - reset bits are shifted by 1 */
fmc_writel(ft->fmc, ~(1 << (ft->fmc->slot_id + shift)), addr);
ft_iowrite(ft, ~(1 << (ft->fmc->slot_id + shift)), addr);
udelay(5000);
val = fmc_readl(ft->fmc, addr);
val = ft_ioread(ft, addr);
val |= (1 << (ft->fmc->slot_id + shift));
/* Un-Reset */
fmc_writel(ft->fmc, val, addr);
ft_iowrite(ft, val, addr);
return 0;
}
......
......@@ -229,13 +229,13 @@ static int ft_timestap_get(struct zio_cset *cset, struct ft_hw_timestamp *hwts,
fifo_addr += last ? TDC_FIFO_LAST : TDC_FIFO_OUT;
for (i = 0; i < TDC_FIFO_OUT_N; ++i) {
data[i] = fmc_readl(ft->fmc, fifo_addr + i * 4);
data[i] = ft_ioread(ft, fifo_addr + i * 4);
dev_vdbg(&cset->head.dev, "FIFO read 0x%x from 0x%x\n",
data[i], fifo_addr + i * 4);
}
if (last) {
valid = !!(fmc_readl(ft->fmc, fifo_addr + TDC_FIFO_LAST_CSR) &
valid = !!(ft_ioread(ft, fifo_addr + TDC_FIFO_LAST_CSR) &
TDC_FIFO_LAST_CSR_VALID);
}
......@@ -280,7 +280,7 @@ static irqreturn_t ft_irq_handler(int irq, void *dev_id)
struct zio_cset *cset;
int i;
irq_stat = fmc_readl(ft->fmc, ft->ft_irq_base + TDC_REG_EIC_ISR);
irq_stat = ft_ioread(ft, ft->ft_irq_base + TDC_REG_EIC_ISR);
if (!irq_stat)
return IRQ_NONE;
......@@ -304,19 +304,19 @@ irq:
ft_readout_fifo_one(cset);
fifo_csr_addr = ft->ft_buffer_base +
TDC_FIFO_OFFSET * cset->index + TDC_FIFO_CSR;
fifo_stat = fmc_readl(ft->fmc, fifo_csr_addr);
fifo_stat = ft_ioread(ft, fifo_csr_addr);
if (!(fifo_stat & TDC_FIFO_CSR_EMPTY))
continue; /* Still something to read */
/* Ack the interrupt, nothing to read anymore */
fmc_writel(ft->fmc, 1 << i,
ft_iowrite(ft, 1 << i,
ft->ft_irq_base + TDC_REG_EIC_ISR);
tmp_irq_stat &= (~(1 << i));
}
} while (tmp_irq_stat);
/* Meanwhile we got another interrupt? then repeat */
irq_stat = fmc_readl(ft->fmc, ft->ft_irq_base + TDC_REG_EIC_ISR);
irq_stat = ft_ioread(ft, ft->ft_irq_base + TDC_REG_EIC_ISR);
if (irq_stat)
goto irq;
......@@ -336,7 +336,7 @@ int ft_irq_init(struct fmctdc_dev *ft)
ft_writel(ft, 40, TDC_REG_IRQ_TIMEOUT);
/* disable timestamp readout IRQ, user will enable it manually */
fmc_writel(ft->fmc, 0x1F, ft->ft_irq_base + TDC_REG_EIC_IDR);
ft_iowrite(ft, 0x1F, ft->ft_irq_base + TDC_REG_EIC_IDR);
/* pass the core's base addr as the VIC IRQ vector. */
/* fixme: vector table points to the bridge instead of
......@@ -357,6 +357,6 @@ int ft_irq_init(struct fmctdc_dev *ft)
void ft_irq_exit(struct fmctdc_dev *ft)
{
fmc_writel(ft->fmc, ~0, ft->ft_irq_base + TDC_REG_EIC_IDR);
ft_iowrite(ft, ~0, ft->ft_irq_base + TDC_REG_EIC_IDR);
fmc_irq_free(ft->fmc);
}
......@@ -287,18 +287,18 @@ static void ft_change_flags(struct zio_obj_head *head, unsigned long mask)
ien = ft_readl(ft, TDC_REG_INPUT_ENABLE);
if (chan->flags & ZIO_STATUS) {
/* DISABLED */
fmc_writel(ft->fmc, 1 << chan->cset->index,
ft_iowrite(ft, 1 << chan->cset->index,
ft->ft_irq_base + TDC_REG_EIC_IDR);
st->cur_seq_id = 0;
st->expected_edge = 1;
zio_trigger_abort_disable(chan->cset, 0);
/* Reset last time-stamp (seq number and valid)*/
//ft_writel(ft, TDC_FIFO_LAST_CSR_VALID | TDC_FIFO_LAST_CSR_RST_SEQ,
//ft_iowrite(ft, TDC_FIFO_LAST_CSR_VALID | TDC_FIFO_LAST_CSR_RST_SEQ,
// TDC_FIFO_LAST_CSR);
} else {
/* ENABLED */
fmc_writel(ft->fmc, 1 << chan->cset->index,
ft_iowrite(ft, 1 << chan->cset->index,
ft->ft_irq_base + TDC_REG_EIC_IER);
zio_arm_trigger(chan->cset->ti);
}
......
......@@ -56,12 +56,12 @@
static void ow_writel(struct fmctdc_dev *ft, uint32_t val, unsigned long reg)
{
fmc_writel(ft->fmc, val, ft->ft_owregs_base + reg);
ft_iowrite(ft, val, ft->ft_owregs_base + reg);
}
static uint32_t ow_readl(struct fmctdc_dev *ft, unsigned long reg)
{
return fmc_readl(ft->fmc, ft->ft_owregs_base + reg);
return ft_ioread(ft, ft->ft_owregs_base + reg);
}
static int ow_reset(struct fmctdc_dev *ft, int port)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment