- I had to skip the ioctls defined in emu10k1.h and asequencer.h (mostly because the struct definitions there depend on DECLARE_BITMAP, which isn't defined in any of the headers I have on my machine. But we could redefine that macro - it's rather trivial).
- I had to flip READ and WRITE to make it work. Looks like we interpret "WRITE" as "writes to memory", whereas in Linux "_IOW" means "writes to the device". So in most cases our WRITE maps to _IOR and READ maps to _IOR, but I suspect this may not be an exact mapping.
I think you are correct about _IOW and _IOR.
Please add a test for at least one of these, to see that there is no systematic error here (I realize that testing all of them is hardly possible).
Why not add READWRITE here in the same commit?