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_ ...@@ -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) 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); 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); 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) ...@@ -706,6 +710,9 @@ int ft_irq_init(struct fmctdc_dev *ft)
/* disable & kick off the interrupts (fixme: possible issue with the HDL) */ /* disable & kick off the interrupts (fixme: possible issue with the HDL) */
ft_iowrite(ft, ~0, ft->ft_irq_base + TDC_EIC_REG_EIC_IDR); 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); fmc_irq_ack(ft->fmc);
/* /*
* We enable interrupts on all channel. but if we do not enable * We enable interrupts on all channel. but if we do not enable
...@@ -729,7 +736,13 @@ int ft_irq_init(struct fmctdc_dev *ft) ...@@ -729,7 +736,13 @@ int ft_irq_init(struct fmctdc_dev *ft)
void ft_irq_exit(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); 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) { 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, ft_iowrite(ft,
DMA_EIC_EIC_IDR_DMA_DONE | DMA_EIC_EIC_IDR_DMA_ERROR, DMA_EIC_EIC_IDR_DMA_DONE | DMA_EIC_EIC_IDR_DMA_ERROR,
ft->ft_dma_eic_base + DMA_EIC_REG_EIC_IER); 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