instrument to figure out IDR <- 0 offender

parent f1fb504e
......@@ -132,6 +132,10 @@ static inline uint32_t ft_chan_to_irq_mask(struct fmctdc_dev *ft, uint32_t chan_
static void ft_irq_disable_save(struct fmctdc_dev *ft)
{
ft->irq_imr = ft_ioread(ft, ft->ft_irq_base + TDC_EIC_REG_EIC_IMR);
printk(KERN_INFO "race69 %s:%d: ft = %p TDC_EIC_REG_EIC_IDR, ft->irq_imr = %x\n",
__FILE__, __LINE__ ,
ft, ft->irq_imr);
dump_stack();
ft_iowrite(ft, ft->irq_imr, ft->ft_irq_base + TDC_EIC_REG_EIC_IDR);
}
......@@ -706,6 +710,9 @@ int ft_irq_init(struct fmctdc_dev *ft)
/* disable & kick off the interrupts (fixme: possible issue with the HDL) */
ft_iowrite(ft, ~0, ft->ft_irq_base + TDC_EIC_REG_EIC_IDR);
printk(KERN_INFO "race69 %s:%d: ft = %p TDC_EIC_REG_EIC_IDR, ft->irq_imr = %x\n",
__FILE__, __LINE__,
ft, 0);
fmc_irq_ack(ft->fmc);
/*
* We enable interrupts on all channel. but if we do not enable
......@@ -729,7 +736,13 @@ int ft_irq_init(struct fmctdc_dev *ft)
void ft_irq_exit(struct fmctdc_dev *ft)
{
ft_iowrite(ft, ~0, ft->ft_irq_base + TDC_EIC_REG_EIC_IDR);
printk(KERN_INFO "race69 %s:%d: ft = %p TDC_EIC_REG_EIC_IDR, ft->irq_imr = %x\n",
__FILE__, __LINE__,
ft, 0);
if (ft->mode == FT_ACQ_TYPE_DMA) {
printk(KERN_INFO "race69 %s:%d: ft = %p DMA_EIC_REG_EIC_IER, DMA_EIC_EIC_IDR_DMA_DONE | DMA_EIC_EIC_IDR_DMA_ERROR = %x\n",
__FILE__, __LINE__,
ft, DMA_EIC_EIC_IDR_DMA_DONE | DMA_EIC_EIC_IDR_DMA_ERROR);
ft_iowrite(ft,
DMA_EIC_EIC_IDR_DMA_DONE | DMA_EIC_EIC_IDR_DMA_ERROR,
ft->ft_dma_eic_base + DMA_EIC_REG_EIC_IER);
......
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