copy_to_user does not have any defined access type; like memcpy, it can use whatever transfers it likes.
If your hardware supports only 16-bit accesses, then you must copy the data to your own buffer in 'real' memory with explicit 16-bit accesses, and call copy_to_user on that.