Unable to write to SIMASK

gopi at india.tejasnetworks.com gopi at india.tejasnetworks.com
Thu Feb 21 11:53:01 EST 2002


hi..

  We have an MPC860T based custom board.

  We wanted to control interrupt on one of the irqs by writing to SIMASK
register using a small driver with two ioctls which will will do
the following:

  // WRITE_MASK_IOCTL
  simask_write_ioctl(mask) {
    cli();
    (volatile unsigned int *)(IMMR + simask_offset) = mask;
    written_value = *(volatile unsigned int *)(IMMR + simask_offset);
    sti();
    printk (written_value);
  }

  // READ_MASK_IOCTL
  simask_read_ioctl() {
    cli(); // Not really needed..
    read_value = *(volatile unsigned int *)(IMMR + simask_offset);
    sti();
    printk (read_value);
  }


  When we make the ioctl calls from user space the value of the mask
seems to be getting changed during the driver time, but is reverted
back to its original value when we try to read it again.

Following is the sequence of events:

  ioctl(fd, READ_MASK_IOCTL) = 0x3edd0000
  ioctl(fd, WRITE_MASK_IOCTL, 0x1edd0000)
    here printk of the driver prints 0x1edd0000, so it looks like
    the value is written
  ioctl(fd, READ_MASK_IOCTL) = 0x3edd0000
    => somebody is reverting it back.

Any clue as to why this is happening?

thanx in advance
gopi

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list