removed copies of pointers in fifo driver

The previous fifo driver made local copies of pointers
in read/write of the variables it needed.  And it had
to store the values back in the structure when it was
finished.  This has been simplified to just deference
the structure without a copy.