#20 Ines GPIB-PCI-XL with ines_pci_accel

open
nobody
None
5
2005-10-10
2005-10-10
Anonymous
No

I own a new Ines GPIB-PCI-XL board (detected as pci
vendor:device = 0x16da:0x0011, manufacturing date:
October 2004). I've tried using using such a board with
linux-gpib-3.1.101 on linux box running kernel
2.4.18-14 (Redhat 8.0).
With the non-accelerated option (board_type="ines_pci"
in my /etc/gpib.conf) the board apparently works,
although kernel logging issues a lot of "fifo error"
messages. Such messages are seemingly harmless, except
for the fact that I end up producing megabytes of logs.
With board_type="ines_pci_accel", however, the board
does not work, namely it fails on read operations (it
only works on writing to external devices) and
eventually it crashes the OS.

Here are log messages produced before crash:
Oct 7 17:23:47 pc38 kernel: gpib: registered ines_pci
interface
Oct 7 17:23:47 pc38 kernel: gpib: registered
ines_pci_accel interface
Oct 7 17:23:48 pc38 modprobe: modprobe: Can't locate
module char-major-160-0
Oct 7 17:23:48 pc38 kernel: PCI: Found IRQ 5 for
device 00:10.0
Oct 7 17:23:48 pc38 kernel: ines gpib: fifo error
Oct 7 17:23:55 pc38 kernel: gpib write error
Oct 7 17:33:17 pc38 syslogd 1.4.1: restart. ## reboot
after crash

Here is the excerpt of /etc/gpib.conf defining the board:
/* This Section Configures the configurable driver
characteristics
* as board address, interrupt level and driver
specific stuff
*/
interface {
minor = 0
board_type = "ines_pci_accel"
name = "joe"
pad = 0
sad = 0
timeout = T10s
master = yes
}

Discussion

  • Nobody/Anonymous

    Logged In: NO

    It's the guy who submitted this bug report. Sorry, I forgot
    to sign:
    Giuseppe Allodi (allodi@fis.unipr.it)

     
  • Stefan Schippers

    It seems that the ines_gpib driver is not fully compatible with the GPIB Chip (probably INES i72110). The chip has 8 registers. However the driver uses more. As a work-around, in interrupt.c I commented out (see below) all lines associated with
    interrupt registers 3 and 4, since these do not exist any more. The accelerated read and write routines (which I do not need) also seem to use registers which are not available on the GPIB-PCI-XL card.

    irqreturn_t ines_interrupt(gpib_board_t *board)
    {
    ines_private_t *priv = board->private_data;
    nec7210_private_t *nec_priv = &priv->nec7210_priv;
    unsigned int isr3_bits, isr4_bits;
    unsigned long flags;
    int wake = 0;

    spin_lock_irqsave( &board->spinlock, flags );

    nec7210_interrupt( board, nec_priv );
    /*
    isr3_bits = ines_inb( priv, ISR3 );
    isr4_bits = ines_inb( priv, ISR4 );
    if( isr3_bits & IFC_ACTIVE_BIT )
    {
    push_gpib_event( board, EventIFC );
    wake++;
    }
    if( isr3_bits & FIFO_ERROR_BIT )
    printk( "ines gpib: fifo error\n" );
    if( isr3_bits & XFER_COUNT_BIT )
    wake++;

    if( isr4_bits & ( IN_FIFO_WATERMARK_BIT | IN_FIFO_FULL_BIT | OUT_FIFO_WATERMARK_BIT |
    OUT_FIFO_EMPTY_BIT ) )
    wake++;
    */
    if(wake) wake_up_interruptible(&board->wait);
    spin_unlock_irqrestore( &board->spinlock, flags );
    return IRQ_HANDLED;
    }

     

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks