Hi Chris,
Yes, the MMA8451Q uses a combined I2C data transfer format and requires a repeated start condition after the second byte (register address).
For instance, a single byte read from the WHO_AM_I register 0x0D looks like this (note that it is for the MMA8652FC I have on my desk):


Also make sure that you are using a correct 7-bit slave address, which is either 0x1C (SA0 = 0) or 0x1D (SA0 = 1).
Regarding Linux drivers, I would let others monitoring this forum comment it.
Regards,
Tomas