Both ioctl commands destroyed the control register by writing the content of the status register into it. --- c/src/lib/libbsp/sparc/shared/spw/grspw.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw.c b/c/src/lib/libbsp/sparc/shared/spw/grspw.c index b6ee255..5cedcb9 100644 --- a/c/src/lib/libbsp/sparc/shared/spw/grspw.c +++ b/c/src/lib/libbsp/sparc/shared/spw/grspw.c @@ -1138,7 +1138,7 @@ static rtems_device_driver grspw_control( if ((unsigned int)ioarg->buffer > 1) { return RTEMS_INVALID_NAME; } - SPW_CTRL_WRITE(pDev, (SPW_STATUS_READ(pDev) & 0xFFFEFFFF) | ((unsigned int)ioarg->buffer << 16)); + SPW_CTRL_WRITE(pDev, (SPW_CTRL_READ(pDev) & 0xFFFEFFFF) | ((unsigned int)ioarg->buffer << 16)); if (((SPW_CTRL_READ(pDev) >> 16) & 1) != (unsigned int)ioarg->buffer) { return RTEMS_IO_ERROR; } @@ -1149,7 +1149,7 @@ static rtems_device_driver grspw_control( if ((unsigned int)ioarg->buffer > 1) { return RTEMS_INVALID_NAME; } - SPW_CTRL_WRITE(pDev, (SPW_STATUS_READ(pDev) & 0xFFFDFFFF) | ((unsigned int)ioarg->buffer << 17)); + SPW_CTRL_WRITE(pDev, (SPW_CTRL_READ(pDev) & 0xFFFDFFFF) | ((unsigned int)ioarg->buffer << 17)); if (((SPW_CTRL_READ(pDev) >> 17) & 1) != (unsigned int)ioarg->buffer) { return RTEMS_IO_ERROR; } -- 1.7.0.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel